我正在尝试更改标签的文本,但是我不知道如何访问它。我添加了标签和按钮,并且我想在单击按钮时更改标签的文本。但是,我无法从该函数访问标签-看到带有问号的行。我应该将其更改为什么?

当我按原样尝试代码时,出现“示例实例没有属性'frame2'”

我正在使用Python 2.7

=============更新=========

将frame2更改为self.frame2,但没有解决问题

class Example(Frame):

   def __init__(self, parent):
      Frame.__init__(self, parent)
      self.all = []
      self.path = ""
      self.parent = parent
      self.initUI()

   def initUI(self):

    self.parent.title("SomeName")
    self.style = Style()
    self.style.theme_use("default")

    self.frame2 = Frame(self, relief=FLAT, borderwidth=2)
    self.frame2.pack(side=TOP, fill=BOTH, expand=False)

    # this is my label
    usrLable = Label(self.frame2, text="Username: ")
    usrLable.pack(side=LEFT, padx=5, pady=1)

    frame6 = Frame(self, relief=FLAT, borderwidth=2)
    frame6.pack(fill=BOTH, expand=True)

    # this is my button
    stopButton = Button(frame6, text="Stop", command=self.stopButtonClick)
    stopButton.pack(side=LEFT)

    def stopButtonClick(self):
        try:
           self.frame2.usrLable.configure(text="hello") # ?????????????
        except Exception,e:
              print str(e)
        return

最佳答案

您需要替换以下行:

frame2 = Frame(self, relief=FLAT, borderwidth=2)
frame2.pack(side=TOP, fill=BOTH, expand=False)


与:

self.frame2 = Frame(self, relief=FLAT, borderwidth=2)
self.frame2.pack(side=TOP, fill=BOTH, expand=False)


使frame2成为实例属性而不是局部变量。

并相应地将对frame2的引用更改为self.frame2

usrLable相同。



class Example(Frame):

    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.all = []
        self.path = ""
        self.parent = parent
        self.initUI()

    def initUI(self):
        self.parent.title("SomeName")
        self.style = Style()
        self.style.theme_use("default")

        self.frame2 = Frame(self, relief=FLAT, borderwidth=2)
        self.frame2.pack(side=TOP, fill=BOTH, expand=False)

        self.usrLable = Label(self.frame2, text="Username: ")
        self.usrLable.pack(side=LEFT, padx=5, pady=1)

        self.frame6 = Frame(self, relief=FLAT, borderwidth=2)
        self.frame6.pack(fill=BOTH, expand=True)

        stopButton = Button(self.frame6, text="Stop", command=self.stopButtonClick)
        stopButton.pack(side=LEFT)

    def stopButtonClick(self):
        self.usrLable.configure(text="hello")

09-30 17:56