多个tkinter表单?

0 投票
2 回答
2723 浏览
提问于 2025-04-19 01:23

我用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() 要好一点,因为后者会“忘记”这个小部件。

另外,关于问题的后半部分,没错,你可以打开新的表单,你可以创建更多或不同的小部件,甚至可以打开更多窗口,或者在一个函数里调用另一个模块。

我觉得这已经回答了你的问题,但如果还有其他疑问,随时问我。

撰写回答