Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多个tkinter表单?_Python_User Interface_Tkinter - Fatal编程技术网

Python 多个tkinter表单?

Python 多个tkinter表单?,python,user-interface,tkinter,Python,User Interface,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, c

我有一个用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()
GUI中的按钮允许我在单击时调用函数

我知道可以使组件处于非活动状态,但是否可以在单击按钮时拉出另一个窗体


使所有组件消失并产生新组件?

个人而言,要做到这一点,我将在一个框架内构建每个表单,更改表单的方法非常简单: (使用包装)

(使用网格)

如果它是单向的(即不能重新加载第一个表单) 然后你可以打电话:

frame.destroy()

詹姆斯

好的,首先詹姆斯给出了一个很好的答案,但我想补充几点:

您可以使用
grid.remove()
这将记住小部件的位置等。因此,您可以
grid()
再次使用它,并使用相同的规格将其取回。这可能比
pack/grid.forget()
稍好一些,因为他们“忘记”了小部件

同样要回答问题的下半部分,是的,你可以打开新的表单,你可以创建更多或不同的小部件,更多的窗口,甚至可以在一个函数中调用另一个模块


我想这已经回答了您的问题,但是如果还有什么问题,请提问。

您的意思是销毁所有小部件并在同一tk窗口中创建新的小部件吗?是的,销毁所有小部件但保持窗口打开。基本上是第一个“表单”的提交,提出了第二组Widgetsy您也可以使用
frame1.lift(frame2)
(lift frame1 over frame2)或
frame1.lower(frame2)
(frame2下的下部frame1)
frame1.grid_forget()
frame2.grid()
frame.destroy()