Home > database >  Python / Tkinter : Random number in function
Python / Tkinter : Random number in function

Time:03-10

I want to get a random number (in "boucle") all the time i press the button, but when i do it, it gives me the same number

def boucledef(boucle=random.randint(0,10)):
    global copienom, listprob
    if boucle>0:
        nom=selectRandom(listprob)
        while copienom == nom:
            nom=selectRandom(listprob)
        copienom=nom
        global myLabel
            
        if boucle >1:
            delete_label()
            myLabel = Label(root, text=nom, font=("Arial",20), bg = couleur_bg, fg = "#2C2E75")
            myLabel.pack(pady=10)
        
        if boucle ==1:
            delete_label()
            myLabel = Label(root, text=nom " is choosen", font=("Arial",20), bg = couleur_bg, fg = "#2C2E75")
            myLabel.pack(pady=10)
            DeleteButton["state"]=NORMAL
            file_menu.entryconfig("New", state="normal")
            listprob=[]
        root.after(1000,boucledef, boucle-1)

CodePudding user response:

Default parameter in python ... Once set, this arg has a memory space, so it wont need to call random.randint(0,10) the other times ...

Here's a workaround :

def boucledef(boucle=None):
    global copienom, listprob
    if boucle == None :
        boucle = random.randint(0,10)
    if boucle>0:
    ...

For more information, python default argument are evaluated when the function is created, not when you call it. If you want to have a closer look, this thread can help you.

  • Related