更改标签上的文字

edi*_*ate 35 python tkinter python-3.x

我在使用键绑定来更改标签或任何参数的值时遇到问题.这是我的代码:

from tkinter import*

class MyGUI:
  def __init__(self):
    self.__mainWindow = Tk()
    #self.fram1 = Frame(self.__mainWindow)
    self.labelText = 'Enter amount to deposit'
    self.depositLabel = Label(self.__mainWindow, text = self.labelText)
    self.depositEntry = Entry(self.__mainWindow, width = 10)
    self.depositEntry.bind('<Return>', self.depositCallBack)
    self.depositLabel.pack()
    self.depositEntry.pack()

    mainloop()

  def depositCallBack(self,event):
    self.labelText = 'change the value'
    print(self.labelText)

myGUI = MyGUI()
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我点击输入框并按Enter键,希望标签将值更改为"更改值".但是,虽然它确实打印了该文本,但标签保持不变.

通过查看有关类似问题和问题的其他问题,我已经想出了如何在课堂外使用其中的一些,但是我在课堂上做这件事有些困难.

另外,在旁注中,"主人"在tkinter中扮演什么角色?

fal*_*tru 65

self.labelText = 'change the value'
Run Code Online (Sandbox Code Playgroud)

上面的句子使labelText引用'更改值',但不更改depositLabel的文本.

要更改depositLabel的文本,请使用以下其中一项:

self.depositLabel['text'] = 'change the value'
Run Code Online (Sandbox Code Playgroud)

要么

self.depositLabel.config(text='change the value')
Run Code Online (Sandbox Code Playgroud)

  • 我没有输入`self.labelText['text']`,而是输入`self.depositLabel['text']`。 (2认同)

psy*_*yFi 17

您还可以textvariable在创建Label时定义,并更改textvariable以更新标签中的文本.这是一个例子:

labelText = Stringvar()
depositLabel = Label(self, textvariable=labelText)
depositLabel.grid()

def updateDepositLabel(txt) # you may have to use *args in some cases
    labelText.set(txt)
Run Code Online (Sandbox Code Playgroud)

无需depositLabel手动更新文本.Tk为你做到了.

  • 感谢您提供简洁的解决方案。建议为初学者评论代码以理解。 (2认同)

小智 6

使用config方法改变标签的值:

top = Tk()

l = Label(top)
l.pack()

l.config(text = "Hello World", width = "50")
Run Code Online (Sandbox Code Playgroud)