2014-08-31 22 views
0

我有一个GUI,我用python和tkinter创建。多个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() 

按钮允许我这样称呼上单击功能。

我知道可以使组件处于非活动状态,但是可以在单击按钮时拉起另一个表单吗?

使所有组件消失并提出新的组件?

+0

你的意思是销毁所有小部件并在同一个tk窗口中创建新小部件? – W1ll1amvl 2014-08-31 06:50:20

+0

是的,销毁所有小部件,但保持窗口打开。基本上是第一个“表单”提交第二组小部件 – user8028 2014-08-31 07:08:00

回答

1

亲自为此,我需要建立一个框架内的各种形式,这种方式改变形式是简单的: (使用包)

frame1.pack_forget() 
frame2.pack() 

(使用网格)

frame1.grid_forget() 
frame2.grid() 

,如果这是是一个单向的事(即你不能重新加载第一种形式) 那么你可以拨打:

frame.destroy() 

詹姆斯

+1

您也可以使用'frame1.lift(frame2)'(frame1 over frame2)或frame1.lower(frame2)'( frame2下的第1帧) – fhdrsdg 2014-09-01 11:01:29

1

好吧,首先詹姆斯给了一个很好的答案,但我想添加几件事情:

您可以使用此grid.remove()会记得其中一个部件是等这样你就可以.grid()它再次拿回相同的规格。这可能比pack/grid.forget()略好,因为他们忘记了这个小部件。

也回答问题的下半部分,是的,你可以调出新的窗体,你可以创建更多或不同的小部件,更多的窗口,甚至可以在一个函数内调用另一个模块。

我认为这已经回答了你的问题,但如果还有什么更多的问题。

+0

+1因为我忘了remove() – 2014-09-01 17:09:34