Python 从tkinter按钮调用的函数返回数据
我需要从tkinter按钮调用的函数返回数据Python 从tkinter按钮调用的函数返回数据,python,function,button,tkinter,Python,Function,Button,Tkinter,我需要从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() 我不确
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等)如果你想声明
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()
如果要将
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()
在此场景中,执行您希望函数在函数内部执行的操作
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_)
在此场景中,执行您希望函数在函数内部执行的操作
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_)
最好不要使用全局变量
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])
最好不要使用全局变量
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])
您可能有一个错误,因为您似乎导入了
random模块
,并调用了回调函数random
出现此问题的另一个原因是您影响的是局部变量而不是全局变量。您可能有一个错误,因为您似乎导入了
随机模块
,并调用了回调函数随机
这里问题的另一个原因是影响局部变量而不是全局变量。回过头来看,我意识到代码没有多大意义,但这就是问题所在。我不知道怎么做(标题)。你想返回值。把它们还给哪里?按钮不能将值返回到任何地方。很难解释我想问什么,因为实际代码有100行长,但是我通过调用另一个函数return()找到了答案,该函数调用random()并返回num_1和num_2 to return(),读回这段代码,我意识到代码没有多大意义,但这就是问题所在。我不知道怎么做(标题)。你想返回值。把它们还给哪里?按钮不能将值返回到任何地方。很难解释我想问什么,因为实际代码有100行长,但是我通过调用另一个函数return()找到了答案,该函数调用了random(),并返回num_1和num_2以返回()使用lambda函数来做这样的事情是一个有趣的想法。虽然它更适合javascript.imho,但避免使用全局变量是一个更有趣的想法)全局变量
num_1
和num_2
不会受到函数random(num_1,num_2)
的影响。尝试在root.mainloop()之后打印num_1
和num_2
的值。您将得到None
。使用lambda函数来做这样的事情是一个有趣的想法。虽然它更适合javascript.imho,但避免使用全局变量是一个更有趣的想法)全局变量num_1
和num_2
不会受到函数random(num_1,num_2)
的影响。尝试在root.mainloop()之后打印num_1
和num_2
的值。您将获得无
。