Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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_Tkinter - Fatal编程技术网

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")