gpt4 book ai didi

python - Tkinter 变量定义,哪个更可取?

转载 作者:太空宇宙 更新时间:2023-11-04 01:27:36 26 4
gpt4 key购买 nike

我是 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 比另一个更受青睐?

最佳答案

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

Variables can be used with most entry widgets to track changes to the entered value. The Checkbutton and Radiobutton widgets require variables to work properly.

Variables can also be used to validate the contents of an entry widget, and to change the text in label widgets.

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

关于python - Tkinter 变量定义,哪个更可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16730559/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com