Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从tkinter按钮调用的函数返回数据_Python_Function_Button_Tkinter - Fatal编程技术网

Python 从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() 我不确

我需要从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等)

如果你想声明
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
的值。您将获得