Python 如何替换Tkinter中的标签/条目?
我需要删除这些条目,并通过按一个按钮将其替换为不同的条目/标签,该按钮将删除其中的条目/标签,并显示新条目/标签。我尝试了所有方法,但找不到解决方案:Python 如何替换Tkinter中的标签/条目?,python,tkinter,Python,Tkinter,我需要删除这些条目,并通过按一个按钮将其替换为不同的条目/标签,该按钮将删除其中的条目/标签,并显示新条目/标签。我尝试了所有方法,但找不到解决方案: def stand(): e1 = Tkinter.Entry(main_window) e1.grid(row =6, column=3) e2 = Tkinter.Entry(main_window) e2.grid(row =7, column=3) e3 = Tkinter.Entry(main_w
def stand():
e1 = Tkinter.Entry(main_window)
e1.grid(row =6, column=3)
e2 = Tkinter.Entry(main_window)
e2.grid(row =7, column=3)
e3 = Tkinter.Entry(main_window)
e3.grid(row =8, column=3)
e4 = Tkinter.Entry(main_window)
e4.grid(row =9, column=3)
e5 = Tkinter.Entry(main_window)
e5.grid(row = 10, column = 3)
e6 = Tkinter.Entry(main_window)
e6.grid(row=11, column = 3)
p1 = Tkinter.Label (main_window)
p1.grid(row = 6, column =2)
p2 = Tkinter.Label (main_window)
p2.grid(row =7, column =2)
p3 = Tkinter.Label (main_window)
p3.grid(row = 8, column =2)
p4 = Tkinter.Label (main_window)
p4.grid(row =9 , column =2)
p5 = Tkinter.Label (main_window)
p5.grid(row =10 , column =2)
p6 = Tkinter.Label (main_window)
p6.grid(row =11 , column =2)
有什么想法吗?您可以在错误消息中看到问题:解释器认为
e1
是一个全局名称(与其他小部件一起),但您在本地范围的stand()
中定义了它,因此程序的其他部分不知道它。有多种解决方案。一个解决方案是使其全球化:
NameError: global name 'e1' is not defined
我真的不喜欢那样做。另一个解决方案是转向面向对象的方法:
e1 = Tkinter.Entry(main_window)
def stand():
global e1
e1.grid(row =6, column=3)
另一种解决方案是将小部件作为参数传递给其他函数:
class App(object):
...
def stand():
self.e1 = Tkinter.Entry(main_window)
self.e1.grid(row =6, column=3)
def access():
print(self.e1) # can access it
最后,您应该通过重新配置小部件来重新配置它们,而不是删除它们并创建新的小部件:
def stand():
self.e1 = Tkinter.Entry(main_window)
self.e1.grid(row =6, column=3)
def access(widget):
print(widget)
NameError从何而来?你试过什么?你做过事件绑定吗?你真的不需要所有的6个标签和6个条目来复制你的错误,是吗?还有,你说你“尝试了一切”——你尝试了什么?
e1.config(width=30)
p1.config(text="New Text")