[英]Python tkinter textvariable in label widget
我在代碼的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)
這就是我在代碼中關於此變量的全部內容,並且在終端中未出現任何錯誤。 它根本不顯示。
編輯:解決原始帖子的方法是在標簽小部件中使用text=localtime2.get()
而不是textvariable=localtime2
( 出於某些奇怪的原因 )。 但是,我的原始答案仍然正確,因為應該使用tkinter變量,所以我會繼續保持下去。
您必須在tkinter小部件中使用tkinter變量,而不是普通的python變量。 Tkinter變量與普通變量略有不同,必須首先將其定義為特定的數據類型。 例如,必須首先創建包含字符串的變量,如下所示:
string_variable = tk.StringVar()
同樣,將創建一個布爾值,如下所示:
boolean_variable = tk.BooleanVar()
在此處閱讀有關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)
只要tkinter變量發生變化,更新就會自動反映到所有地方。 由於這個屬性,您不能在此處使用普通的python變量。
嘗試使用StringVar()
,然后使用set()
設置變量內容
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.