使用按钮返回值

时间:2016-08-03 13:57:57

标签: python button tkinter return

我尝试使用按钮返回值,但我无法让它工作。我想要的是按钮返回一个值,以后可以用来检查是否使用了该功能。我使用的代码如下:

from Tkinter import *
master = Tk()
master.geometry("200x100")
def bla():
    return 1
Button(master, command = bla, text = 'OK').pack()

if bla == 1:
    print('1')

mainloop()

我也曾尝试使用lambda这样做,但我也无法想出那个。

3 个答案:

答案 0 :(得分:3)

尝试查看此链接https://stackoverflow.com/a/11907627/3110529,因为它解决了您遇到的问题。

主要关注的是回调被设计为仅仅是响应事件而发生的行为,因此它们返回值并不完全有意义。在你的程序中,当你说

if bla == 1: print('1')

你问的是函数指针(或引用?)是否等于它显然永远不会的1

您可能想要使用全局变量来覆盖它(即存储'blah'变量,然后让回调设置其值)但这通常被认为是不好的做法。相反,如在链接中,尝试将其转换为一个类,该类允许您使用成员变量以更有条理的方式存储回调的结果和响应。

答案 1 :(得分:1)

您的问题是您没有保存bla()的返回值。

您可以使用全局变量执行此操作:

from Tkinter import *
master = Tk()
master.geometry("200x100")

gloBla = 0
def bla():
    global gloBla
    gloBla = 1
Button(master, command = bla, text = 'OK').pack()


mainloop()

if gloBla == 1:
    print('1')

答案 2 :(得分:0)

根据Tknitter文档http://effbot.org/tkinterbook/variable.htm,您可以使用BooleanVar StringVarIntVar。它们充当全局变量。在这个花瓶中Variable每按一下按钮就会改变。

from Tkinter import *
master = Tk()
Variable = BooleanVar()
Variable.set(False)

app = Frame(master, borderwidth=10).grid()

def bla():
    print("1")
    if Variable.get() == 0:Variable.set(True)
    else:Variable.set(False)
    print("current state of Variable: {0} ".format(Variable.get()))

button1= Button(app, text = "Click Me",command=lambda:bla()).grid()

mainloop()

lambda:命令确保在启动时不调用该函数。