[英]Why does Python tkinter label widget not update?
class First_Frame(Frame):
def __init__(self,master):
super().__init__(master)
self.grid()
self.widgets()
def widgets(self):
self.commandent1=StringVar()
self.commandent1.set("tutaj bedzie sie pokazywal aktualny status")
self.img=Image.open("database.XPM","r")
self.image_true=ImageTk.PhotoImage(self.img)
self.label=Label(self,image=self.image_true).grid()
self.label2=Label(self,text="twoje gui uzytkownika").grid()
self.widgets_2()
def widgets_2(self):
self.status_text=Label(self,text=self.commandent1.get())
self.entry1=Entry(self)
self.entry1.bind("<Return>",self.update_status)
self.entry1.grid()
self.status_text.grid()
def update_status(self):
self.x=self.entry1.get()
self.commandent1.set(self.x)
您的標簽 (非文本)小部件沒有更新的主要原因有兩個。
原因1.您需要處理從綁定傳遞到update_status
的事件。 為此,只需添加event
或您真正想要的任何參數名稱。 我只是使用event
來提高可讀性。
def update_status(self, event):
原因2。您需要(這里不明顯的原因StringVar()
是在標簽小部件上使用StringVar()
的方式。 在這里,您只分配一次StringVar()
的當前文本值, StringVar()
一次。 為了將StringVar()
與標簽窗口小部件一起正確使用,您需要將StringVar()
分配給textvariable
參數而不是text
參數。
像這樣:
Label(self,textvariable=self.commandent1).grid()
注意,我刪除了代碼的圖像部分,因為它與問題無關。 您的最終代碼應如下所示:
from tkinter import *
class First_Frame(Frame):
def __init__(self, master):
super().__init__()
self.grid()
self.widgets()
def widgets(self):
self.commandent1 = StringVar()
self.commandent1.set("tutaj bedzie sie pokazywal aktualny status")
Label(self,text="twoje gui uzytkownika").grid()
self.widgets_2()
def widgets_2(self):
self.entry1 = Entry(self)
self.entry1.bind("<Return>", self.update_status)
self.entry1.grid()
Label(self,textvariable=self.commandent1).grid()
def update_status(self, event):
self.commandent1.set(self.entry1.get())
root = Tk()
First_Frame(root)
root.mainloop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.