从tkinter按钮调用的函数返回数据

时间:2018-12-16 16:49:01

标签: 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()

我不确定返回值实际存储在哪里,因为当我打印num_1和num_2时,都打印None而不是预期的随机数。 任何输入将不胜感激。

(我也有一个mainloop等)

4 个答案:

答案 0 :(得分:1)

如果您打算将num_1num_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

造成此问题的另一个原因是您影响局部变量而不是全局变量。