多个tkinter表单?
我用Python和tkinter
创建了一个图形用户界面(GUI)。
我的代码大概是这样的:
from Tkinter import *
from PIL import Image, ImageTk
master = Tk()
def f1():
print "Change to form A"
def f2():
print "Change to form B"
title = Label(text="Swithing Menus or Forms")
title.grid(row=0, column=1)
blank = Label(text="\n")
blank.grid(row=1, column=1)
b = Button(master, text="Submenu A", command=f1)
b.grid(row=2, column=1)
b2 = Button(master, text="Submenu B", command=f2)
b2.grid(row=2, column=2)
mainloop()
在这个界面里,有些按钮可以让我在点击时调用一些功能。
我知道可以让某些组件变得不可用,但我想知道,点击一个按钮后,能不能弹出另一个窗口?
能不能让所有的组件都消失,然后显示新的组件呢?
2 个回答
1
我个人的做法是把每个表单放在一个框架里,这样切换表单就变得非常简单了:
frame1.pack_forget()
frame2.pack()
(使用网格布局)
frame1.grid_forget()
frame2.grid()
如果这个过程是单向的(也就是说你不能重新加载第一个表单),那么你可以调用:
frame.destroy()
James
1
好的,首先James给出的答案很不错,但我想补充几点:
你可以使用 grid.remove()
这个方法,它会记住一个小部件之前的位置等等,所以你可以再用 .grid()
把它放回去,恢复到原来的样子。这种方法可能比 pack/grid.forget()
要好一点,因为后者会“忘记”这个小部件。
另外,关于问题的后半部分,没错,你可以打开新的表单,你可以创建更多或不同的小部件,甚至可以打开更多窗口,或者在一个函数里调用另一个模块。
我觉得这已经回答了你的问题,但如果还有其他疑问,随时问我。