Python tkinter 的 textvariable 不更新

0 投票
1 回答
9844 浏览
提问于 2025-04-18 05:52

我有一个标签,它的内容经常会变,所以我把它放在了一个函数里。
但是当我调用这个函数的时候,标签却没有显示出来。如果我把文本变量直接设置为文本,那就能正常工作。
我哪里做错了呢?

text = "Now visible to others as {}".format(SERVER_NAME)
        self.updateSearchLabel(text)

def updateSearchLabel(self, textVar):
    text = StringVar()
    text.set(textVar)
    self.lblSearch = Label(self.gpBt, textvariable=text)        
    self.lblSearch.grid(row=0, column=0, sticky=W, padx=(10,0), pady=(5,0))

1 个回答

4

每次调用 updateSearchLabel 时,不要每次都新建一个标签。你可以先创建一个 Label,然后保存一个指向 StringVar 的引用:

def createSearchLabel(self):
    self.lblSearchText = StringVar()
    self.lblSearch = Label(self.gpBt, textvariable=self.lblSearchText)        
    self.lblSearch.grid(row=0, column=0, sticky=W, padx=(10,0), pady=(5,0))

然后在 updateSearchLabel 里面调用 set 方法:

def updateSearchLabel(self, textVar):
    self.lblSearchText.set(textVar)

撰写回答