Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何访问标签以在Tkinter中更改其文本_Python_Python 2.7_Tkinter - Fatal编程技术网

Python 如何访问标签以在Tkinter中更改其文本

Python 如何访问标签以在Tkinter中更改其文本,python,python-2.7,tkinter,Python,Python 2.7,Tkinter,我正在尝试更改标签的文本,但我不知道如何访问它。我已经添加了标签和按钮,我想在单击按钮时更改标签的文本。但是,我无法从函数访问标签-请参见带有问号的行。我应该把它改成什么 当我按原样尝试代码时,我得到“示例实例没有属性‘frame2’” 我正在使用Python 2.7 ================更新========= 将frame2更改为self.frame2,但没有解决问题 class Example(Frame): def __init__(self, parent):

我正在尝试更改标签的文本,但我不知道如何访问它。我已经添加了标签和按钮,我想在单击按钮时更改标签的文本。但是,我无法从函数访问标签-请参见带有问号的行。我应该把它改成什么

当我按原样尝试代码时,我得到“示例实例没有属性‘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)
与:

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

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

usrLable
相同



事实上,标签被添加到了frame2中,所以这是我的一个输入错误,但即使我将frame2更改为self.frame2,我也会得到一个错误:Frame实例没有属性“usrLable”@THTodorov,在这个问题中,你说你有“示例实例没有属性“frame6”`error。它也是
frame2
?@THTodorov,你能给出可以运行的代码吗?只看到问题中的代码,我不知道是什么问题。更新了问题-现在是第2帧出现错误。仍然不起作用,我将第2帧更改为self。两行中的第2帧都是局部变量
self.frame2
是一个实例变量。如果希望在多个位置使用变量,则需要始终使用实例变量。
self.frame2 = Frame(self, relief=FLAT, borderwidth=2)
self.frame2.pack(side=TOP, fill=BOTH, expand=False)
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")