list_ = [0,0]
menu = ""
subpage = ""
def main_menu(root):
print list_
menu = Frame(root)
button0 = Button(menu, text="Go To Subpage",
command=lambda: switch_page("sub"))
button0.grid(row = 0, column = 0)
button1 = Button(menu, text="Save Values",
command=lambda: save_values())
button1.grid(row = 0, column = 1)
global entry0
global entry1
entry0 = Entry(menu)
entry1 = Entry(menu)
entry0.pack()
entry1.pack()
return menu
def sub_menu(root):
subpage = Frame(root)
label0 = Label(text = list_[0])
label1 = Label(text = list_[1])
label0.grid(row = 0, column = 0)
label1.grid(row = 1, column = 0)
button2 = Button(subpage, text="Return To Main Page",
command = lambda: switch_page("main"))
button2.grid(row = 0, column = 0)
return subpage
def save_values():
list_ = []
e0 = entry0.get()
list_.append(e0)
e1 = entry1.get()
list_.append(e1)
print list_
def switch_page(page_name):
slaves = root.pack_slaves()
if slaves:
slaves[0].pack_forget()
pages[page_name].pack(fill="both", expand=True)
root = Tk()
pages = {
"main": main_menu(root),
"sub": sub_menu(root),
}
switch_page("main")
root.mainloop()
所以我的问题是GUI无法打开我已经尝试将它放入另一个新的python文件并尝试重新编写它但略有不同,现在我不会在使用.grid后立即打开()函数,一旦删除了.grid()函数,它将显示GUI。无论如何,对于这段代码,我一点也不确定是什么阻止它打开,因为我所做的研究导致我发现我需要使用root.mainloop(),我已经使用了,另一个解决方案是定义框架长度和宽度,我认为这是不必要的,因为我以前有GUI工作,不仅仅是我有一个用小部件创建的框架。 任何帮助表示赞赏。
另外在切换页面功能的旁注中,我使用.pack_forget()函数,并且正在查看是否有一个功能可以完全关闭页面,或者允许我在页面打开时更改标签一种刷新功能(更新空闲任务不能满足我的需要)
答案 0 :(得分:0)
您不能同时使用grid
并打包与共享同一父级的窗口。你这样做:
...
button0.grid(row = 0, column = 0)
...
entry0.pack()
entry1.pack()
您可以在应用中混合并匹配grid
和pack
所有内容,但是您无法像使用它们那样使用它们,因为这些小部件都有menu
个父母。
此外,您可以使用config
方法更改任何窗口小部件的属性(例如:some_widget.configure(background="red")
)。您需要为该窗口小部件提供引用(变量)。