我需要从tkinter按钮调用的函数中返回数据。
root= Tk()
def random():
num_1= random.randint(0,12)
num_2= random.randint(0,3)
return num_1,num_2
num_1= None
num_2= None
Play=ttk.Button(text="Play",command=random)
Play.grid(row=3,column=0)
root.mainloop()
我不确定返回值实际存储在哪里,因为当我打印num_1和num_2时,都打印None而不是预期的随机数。 任何输入将不胜感激。
(我也有一个mainloop等)
答案 0 :(得分:1)
如果您打算将num_1
和num_2
声明为全局变量,则应在随机函数中声明它。
root= Tk()
def random():
global num_1, num_2
num_1= random.randint(0,12)
num_2= random.randint(0,3)
return num_1,num_2
num_1= None
num_2= None
Play=ttk.Button(text="Play",command=random)
Play.grid(row=3,column=0)
root.mainloop()
答案 1 :(得分:1)
在这种情况下,可以执行您希望函数在函数内部执行的操作。
from tkinter import *
import random
root= Tk()
def random_():
num_1= random.randint(0,12)
num_2= random.randint(0,3)
# return num_1,num_2
print(num_1,num_2)
num_1= None
num_2= None
Play= Button(text="Play",command=random_)
Play.grid(row=3,column=0)
root.mainloop()
返回
可以的话
print(random_)
答案 2 :(得分:0)
首选不使用全局变量
from tkinter import *
import random
def random_(tmp_list):
tmp_list[0] = random.randint(0, 12)
tmp_list[1] = random.randint(0, 3)
root = Tk()
tmp_list = [None, None]
Play=Button(text='Play', command=lambda: random_(tmp_list))
Play.grid(row=3, column=0)
root.mainloop()
print(tmp_list[0], tmp_list[1])
答案 3 :(得分:0)
您似乎有一个错误,因为您似乎导入了random module
并也调用了回调函数random
。
造成此问题的另一个原因是您影响局部变量而不是全局变量。