使用Tkinter控制更改窗口

时间:2013-04-22 10:39:59

标签: tkinter controls switching

我正在尝试构建一个可让您在页面之间切换的小应用程序。这是我到目前为止所得到的:

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更改窗口?

感谢您的帮助!

1 个答案:

答案 0 :(得分: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()