使用tkinter回调有效地设置变量

2024-06-16 09:34:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在一个tkinter按钮上使用tkinter回调设置一些变量。所以我可以说(在类定义中)

Button1 = Button(parentframe, text="set", command = self.setvar)

def setvar(self):
    self.myvar = 7

有没有什么方法可以用内联(lambda)函数来实现,而不是用一些愚蠢的小回调把事情搞得一团糟?在

^{pr2}$

Tags: 方法lambdatextself定义tkinterdefbutton
2条回答

你可以这样做:

command = lambda: setattr(self, 'myvar', 7)

您可以使用Tkinter的integer variable class和您怀疑的lambda函数来做类似的事情。一个IntVar类型的变量有.get()和{}方法,这两个方法允许您获得并设置其值。以以下为例:

from Tkinter import *


class App(Frame):
    def __init__(self, *args, **kwargs):
        Frame.__init__(self, *args, **kwargs)
        # initialise Integer Variables
        self.example1 = IntVar()
        self.example1.set(2)

        self.text1 = Entry(root, textvariable=self.example1, state=DISABLED)
        self.text1.grid(row=0, column=0)

        self.button1 = Button(root, text="Double", command=lambda: self.double_value(self.example1))
        self.button1.grid(row=1, column=0)

    def double_value(self, var):
        var.set(var.get() * 2)


root = Tk()
app = App(root)

root.mainloop()

这为您提供了一点灵活性,并且可以扩展为将相同的功能应用于与不同的Entry框和IntVar变量相关的多个按钮。在

相关问题 更多 >