我有这个代码:
# -*- coding: utf-8 -*-
def clear_screen():
button2.pack_forget()
button3.pack_forget()
text.pack_forget()
label.pack_forget()
def main_page():
var = StringVar()
label = Label( root, textvariable=var)
var.set("Fill in the caps: ")
label.pack()
global text
text = Text(root,font=("Purisa",12))
text.pack()
global button
button=Button(root, text ="Create text with caps.", command =lambda: full_function())
button.pack()
def clear_and_main():
clear_screen()
main_page()
def full_function():
global button2
global button3
button3=Button(root, text ="Main page", command=lambda: clear_and_main())
button3.pack()
button2=Button(root, text ="Answer")
button2.pack()
button.pack_forget()
from Tkinter import *
root = Tk()
main_page()
root.mainloop()
我希望这个程序能这样工作,如果我点击“主页”按钮,它将重新创建主页。但事实并非如此。Textfield和button不会再次出现。我怎么才能让它正常工作?在
您忽略了将}声明为全局的,因此{}失败了。在
text
和{调用
pack_forget
不会破坏小部件,它只会隐藏它们。你的代码每次都会创建新的小部件,这意味着内存泄漏,每次单击按钮时都会创建越来越多的小部件。在完成您想要的最简单的方法是将所有的小部件放入一个框架中,然后销毁并重新创建框架。当您销毁一个小部件时,任何子部件都会自动销毁。这也使得维护更容易,因为如果添加更多的小部件,您不必更改任何内容。在
相关问题 更多 >
编程相关推荐