Python:从通过按下按钮生成随机数的函数中获取变量

Python: Getting variable from a function that generates random numbers by pressing a button

我正在开发一款必须掷骰子的游戏。当我按下按钮时,会出现一个从 1 到 6 的随机值,并打印在 window 中 - 这很好。问题是我需要以某种方式获得与 'dice' 显示的值相同的值。这是我的代码:

from tkinter import *
import random
 
window=Tk()
window.geometry("400x400")
 
l1=Label(window)
 
def roll():
    dice=random.randint(1,6)
    l1.config(text=f'{dice}')
    l1.pack()
     
b1=Button(window,text="Roll the Dice!",foreground='blue',command=roll)
b1.pack()
 
window.mainloop()

这里我想获取值 dice 并在其他地方使用这个值但是函数 roll 绑定到命令按钮 b1。我试图创建另一个函数,甚至 class 但后来我 运行 遇到其他问题,例如即使我反复按下按钮,骰子上的数字也不会改变等。现在我已经运行 没主意了。您能否编辑我的代码,使程序像以前一样工作,但它还 returns dice 显示的值,以便我可以在其他地方使用相同的值?

您可以使用全局变量:

from tkinter import *
import random

window=Tk()
window.geometry("400x400")

l1=Label(window)
l2=Label(window)

def roll():
    global dice
    dice=random.randint(1,6)
    l1.config(text=f'{dice}')
    l1.pack()

def last():
    l2.config(text=f'Last roll was {dice}')
    l2.pack()

b1=Button(window,text="Roll the Dice!",foreground='blue',command=roll)
b1.pack()

b2=Button(window,text="Get last roll",foreground='blue',command=last)
b2.pack()

window.mainloop()

注意:这需要您先按下“滚动”按钮。如果先按下“last”按钮,则会出现 NameError 异常(可以通过在全局范围内使用初始值定义 dice 来避免这种情况)。