我正在尝试更改标签的文本,但是我不知道如何访问它。我添加了标签和按钮,并且我想在单击按钮时更改标签的文本。但是,我无法从该函数访问标签-看到带有问号的行。我应该将其更改为什么?
当我按原样尝试代码时,出现“示例实例没有属性'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")