标签小部件中的Python tkinter textvariable

时间:2018-08-21 08:40:24

标签: python tkinter

我在代码中的def中创建了一个名为“ localtime2”的变量,然后有一个标签为“ textvariable = localtime2”。问题在于它不显示有关变量的信息。

localtime2 = time.asctime(time.localtime(time.time()))
tk.Label(roots, font=('arial', 16, 'bold'), textvariable=localtime2, bd=16, anchor="w").grid(row=2, column=0)

这就是代码中有关此变量的全部内容,并且在终端中未出现任何错误。它根本不显示。

2 个答案:

答案 0 :(得分:3)

编辑:解决原始帖子的方法是在标签小部件中使用text=localtime2.get()而不是textvariable=localtime2(出于某些奇怪的原因 )。但是,我的原始答案仍然是正确的,因为应该使用tkinter变量,所以我会继续这样做。


您必须在tkinter小部件中使用tkinter变量,而不是普通的python变量。 Tkinter变量与普通变量略有不同,必须首先将其定义为特定的数据类型。例如,必须首先创建包含字符串的变量,如下所示:

string_variable = tk.StringVar()

同样会创建一个布尔值,如下所示:

boolean_variable = tk.BooleanVar()

阅读here,以获得有关tkinter变量的更多信息。

这些变量实际上是类,因此要设置它们,必须使用.set()方法。因此,要将tkinter String变量设置为“一个字符串” ,您将使用以下代码:

string_variable = tk.StringVar() # Create the variable 
string_variable.set("a string") # Set the value of the variable

要修复代码,您需要将localtime2设为tkinter变量,并使用.set()方法将其设置为时间。

示例:

localtime2 = tk.StringVar() # Create the localtime2 string variable
localtime2.set(time.asctime(time.localtime(time.time()))) # Set the variable
tk.Label(roots, font=('arial', 16, 'bold'), textvariable=localtime2, bd=16, anchor="w").grid(row=2, column=0)

答案 1 :(得分:1)

只要 tkinter变量发生变化,该更新就会自动反映到任何地方。由于这个属性,您不能在此处使用普通的python变量。
尝试使用StringVar(),然后使用set()

设置变量内容