tkinter翻頁實作

最簡單的tkinter模組中
只需要三行就可以開一個視窗

import Tkinter as tk
root = tk.Tk()
root.mainloop() 

第一行是匯入tkinter模組並且取個小名
第二行是開一個視窗並且存在root當作最基底的變數
第三行用mainloop保持視窗開啟, 不會執行一下就關掉

今天為了設計不同的視窗並且達成翻頁的功能, 讓我們來看看不同的寫作方法

import Tkinter as tk

class firstpage(tk.Frame): 
    def __init__(self, master=None):
        mw=tk.Tk()
        tk.Frame.__init__(self, master=mw) 

app = firstpage() 
app.mainloop() 

為了設計不同的頁面採用class的寫作方法
卻不小心把tk.Tk()包進class中
結果mainloop一直跑的是主頁
這會導致開第二頁的時候主頁關不起來

至於為什麼Frame在class內要init在root就不用
不要問我, 我也不知道

# -*- coding: utf-8 -*- 

import Tkinter as tk

root = tk.Tk()

class mainpage(object):
    def __init__(self, master=None):
        self.root = master 
        self.page = tk.Frame(self.root) 
        self.page.pack()
        self.Button = tk.Button(self.page, text=u'跳頁',command=self.secpage) 
        self.Button.grid(column=0,row=0) 

    def secpage(self):
        self.page.destroy()
        secondpage(self.root)
    
  
class secondpage(object):
    def __init__(self, master=None):
        self.root = master
        self.page = tk.Frame(self.root)
        self.page.pack()
        self.Button = tk.Button(self.page, text=u'主頁',command=self.mainpage) 
        self.Button.grid(column=0,row=0) 
        
    def mainpage(self):
        self.page.destroy()
        mainpage(self.root)    
        
mainpage(root)
root.mainloop()     

上面這一段完成了可以互相跳轉的兩個頁面
注意root = tk.Tk()是在class外的
這樣destroy就可以確實的破壞原來的頁面
大guy是者樣



留言

這個網誌中的熱門文章

python顯示中文

python的模組module匯入語法