如何使小部件再次可见时使用pack\u forget in Tkin

2024-05-29 01:52:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个代码:

# -*- 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不会再次出现。我怎么才能让它正常工作?在


Tags: textmainvardefpagebuttonrootglobal
1条回答
网友
1楼 · 发布于 2024-05-29 01:52:08

您忽略了将text和{}声明为全局的,因此{}失败了。在

调用pack_forget不会破坏小部件,它只会隐藏它们。你的代码每次都会创建新的小部件,这意味着内存泄漏,每次单击按钮时都会创建越来越多的小部件。在

完成您想要的最简单的方法是将所有的小部件放入一个框架中,然后销毁并重新创建框架。当您销毁一个小部件时,任何子部件都会自动销毁。这也使得维护更容易,因为如果添加更多的小部件,您不必更改任何内容。在

相关问题 更多 >

    热门问题