我把对stringvar“commentryvar”的所有引用改为self.commentryvar“在def initUI函数中。在
我不太清楚为什么这是必要的(或者如果做所有的参考self.commentryvar是必要的)。如果有人能解释为什么这解决了这个问题。在
self.commentEntryVar = tk.StringVar()
self.commentEntryVar.set("default text")
print "commentEntryVar"
print self.commentEntryVar.get()
commentEntryWidget = ttk.Entry(workoutParametersFrame, textvariable=self.commentEntryVar)
commentEntryWidget.grid(row=6, column=1)
在========================================= (原题)
尝试使用“textvariable”方法为ttk条目小部件设置默认文本。似乎我正确地设置了tk.StringVar公司,但它不会影响窗口显示--“设置注释”字段保持空白。在
^{pr2}$
请确保保留
StringVar
对象的引用。在例如,尝试下面的例子with/without
del commentEntryWidget
语句。在如果我理解你的代码,你做的每件事在语法上都是正确的。如果该值在屏幕上显示为空白,唯一的解释是
commentEntryVar
是一个局部变量,它在小部件创建之后、窗口出现之前被垃圾回收。在如果它是一个局部变量,当函数退出时,变量将被销毁,因此默认值将被丢弃。例如,这个最小的程序演示了您看到的效果,因为它使用了一个局部变量:
解决方法是保留对StringVar的引用,这样它就不会被垃圾回收。在这段代码中,我们使用了一个类,这样就可以在类变量中存储引用。如果不使用类和对象,则需要将其存储在全局变量中。在
例如,如果将
^{pr2}$commentEntryVar
更改为self.commentEntryVar
,则问题将消失,因为该对象包含一个持久引用:相关问题 更多 >
编程相关推荐