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
来避免这种情况)。
我正在开发一款必须掷骰子的游戏。当我按下按钮时,会出现一个从 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
来避免这种情况)。