2

我是 Tkinter 的新手,我想知道以下哪种设置变量的方法更可取:

class App():
    def __init__(self,master):
        self.var1 = StringVar()
    <filler>
    def openFile(self,button_type):
        name = tkFileDialog.askopenfilename()
        if button_type == 1:
            self.var1.set(name)

或者

class App():
    def __init__(self,master):
        self.var1 = ""
    <filler>
    def openFile(self,button_type):
        name = tkFileDialog.askopenfilename()
        if button_type == 1:
            self.var1 = name

第一个选项是我在 effbot 文档 ( http://effbot.org/tkinterbook/variable.htm ) 中找到的,但第二个选项是我通常会做的。我最大的问题是为什么 1 比另一个更受欢迎?

4

1 回答 1

3

像 StringVar 这样的 Tkinter 变量通常用于跟踪其值的变化或将它们作为创建某些小部件的variableor选项传递。textvariable从您参考的页面的“何时使用变量类”部分:

变量可以与大多数条目小部件一起使用,以跟踪对输入值的更改。Checkbutton 和 Radiobutton 小部件需要变量才能正常工作。

变量还可用于验证条目小部件的内容,以及更改标签小部件中的文本。

因此,在您的情况下,自然的解决方案将是第二个:看起来您想要存储结果,askopenfilename()就像您对另一个语句的结果所做的那样,但不使用它来与小部件的文本交互或跟踪如果StringVar 的值已更改(因为您正在调用该函数,所以您已经知道它何时会被更新)。

于 2013-05-24T08:29:36.693 回答