2013-04-22 29 views
0

我正在尝试构建一个小应用程序,让你在页面之间切换。这是我走到这一步:用Tkinter控制窗口的变化

import tkinter 
from tkinter import ttk 

def main(): 
    root=tkinter.Tk() 
    root.title("Control") 
    first_page = FirstWindow(root) 
    root.mainloop() 


def change_to_secondwindow(): 
    first_page.grid_forget() 
    second_page = SecondWindow(root) 


class FirstWindow(ttk.Frame): 
    def __init__(self,root): 
     ttk.Frame.__init__(self,root) 
     self.grid() 
     self.widgets1_create() 

    def widgets1_create(self): 
     self.b1 = ttk.Button(self, text="First Page", command=change_to_secondwindow) 
     self.b1.grid() 



class SecondWindow(ttk.Frame): 
    def __init__(self,root): 
     ttk.Frame.__init__(self,root) 
     self.grid() 
     self.widgets2_create() 

    def widgets2_create(self): 
     self.b2 = ttk.Button(self, text="Second Page") 
     self.b2.grid() 


main() 

现在,如果我按一下按钮“第一页”,以改变我得到一个错误的第二页。它说全球名first_page没有定义。 我的错误是什么?有没有更好的方法来控制与Tkinter更改窗口?

谢谢你的帮助!

+0

错误说,全球​​'first_page'没有定义。你能否在你的代码中显示你认为你正在创建一个名为'first_page'的全局名称? – 2013-04-22 11:10:50

回答

0

first_pagemain()的局部变量,但您尝试将其用作change_to_secondwindow()中的全局变量。相反,这个功能的,常见的Python的成语是您检查模块是主程序把这个代码if块中:

# remove the call to main() 

if __name__ == '__main__': 
    root=Tkinter.Tk() 
    root.title("Control") 
    first_page = FirstWindow(root) 
    root.mainloop() 
+0

好吧,它的作品,谢谢!现在我的最终目标是拥有八个不同窗口的相当大的GUI。所以如果有人能告诉我如何让我可以回到第一页,并且如果我能够扩大这个范围 – user2304540 2013-04-22 13:09:39