簡體   English   中英

標簽小部件中的Python tkinter textvariable

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM