单击按钮后以相同的 gui 显示标签



我正在尝试制作一个程序来显示'HI' GUI 中的标签,只有在单击同一 GUI 中的按钮'CLICK'后。

我的代码:

import Tkinter as tki
class App(object):
     def __init__(self,root):
         self.root = root
         txt_frm = tki.Frame(self.root, width=900, height=900)
         txt_frm.pack(fill="both", expand=True)
         button3 = tki.Button(txt_frm,text="CLICK", command = self.retrieve_inpu)
         button3.grid(column=0,row=2)

     def retrieve_inpu(self):
        label = tki.Label(txt_frm,text='HI')
        label.grid(column=0,row=3)
root = tki.Tk()
app = App(root)
root.mainloop()

但是我得到的错误是:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:Python27liblib-tkTkinter.py", line 1470, in __call__
    return self.func(*args)
  File "C:/Python27/teste.py", line 14, in retrieve_inpu
    label = tki.Label(txt_frm,text='HI')
NameError: global name 'txt_frm' is not defined

单击按钮后,请帮助我在同一 GUI 中显示标签'HI' 'CLICK'

txt_frm当前是__init__方法的本地。 换句话说,无法从__init__外部访问它。 这意味着当你在retrieve_inpu内部使用它时,Python 将无法找到名称,因此会引发NameError

您可以通过简单地将txt_frm和实例属性设为App来解决此问题:

self.txt_frm = tki.Frame(self.root, width=900, height=900)
self.txt_frm.pack(fill="both", expand=True)

现在,txt_frm可以通过 self 访问,这意味着您可以在 retrieve_inpu 内部使用它:

label = tki.Label(self.txt_frm,text='HI')

最新更新