Tkinter 1行作为命令

时间:2017-11-29 17:17:43

标签: python button tkinter

我的程序中有5个按钮,所有按钮都需要设置一个变量 我可以为所有人制作一个单独的功能,但我认为应该有更好的方法 所以我尝试了以下内容:

 self.__Button1 = tk.Button(self.parent,text='Start', command=lambda: (start_flag = True)).pack()

但这不起作用。有没有办法做到这一点或者其他简单的方法来设置自己的变量(start_flag就是其中之一)?

谢谢你

更新:

通过小说评论我尝试了以下内容: 但是这不起作用,所以我将使用与furas建议的几乎相同的功能。

    def setarr(self, *args, flag, bool):
    # set flag according to button press
    print(flag)
    flag = bool

1 个答案:

答案 0 :(得分:1)

执行此操作的常规方法是创建一个接受单个参数的函数,并根据传入的参数设置变量。您可以使用lambdafunctools.partial创建按钮命令:

import Tkinter as tk

class Example(object):
    def __init__(self):
        self.root = tk.Tk()
        self.variable = None
        self.button1 = tk.Button(self.root, text="One",
                                 command=lambda: self.set_variable(1))
        self.button2 = tk.Button(self.root, text="Two", 
                                 command=lambda: self.set_variable(2))
        self.label = tk.Label(self.root, text="", width=20)

        self.label.pack(side="top", fill="x")
        self.button1.pack(side="top")
        self.button2.pack(side="top")

    def start(self):
        self.root.mainloop()

    def set_variable(self, value):
        self.variable = value
        self.label.configure(text="variable = %s" % self.variable)

example = Example()
example.start()