1. 程式人生 > >Python Tkinter介面應用開發-03 介面的搭建

Python Tkinter介面應用開發-03 介面的搭建

視訊教程觀看地址:http://study.163.com/course/courseMain.htm?courseId=1003853008

 

上節課,所以我們建立了一個主框架,在主框架中建立了一個橫幅,但是這只是介面的一部分,這節課我們就來完善它。現在,我們需要按鈕來啟動和停止我們的計時器。所以,讓我們建立2個按鈕,並將它們新增到視窗的底部。所以,我首先在初始函式中呼叫self.build_buttons:
        self.build_gird() self.build_banner()         self.build_buttons()
然後我們來到類的最下面,實現build_buttons這個函式. 我們最終想要的效果就是,建立兩個按鈕,它們在視窗的底部。所以我們這裡還是使用框架,我要做一個新的框架, 所以,我們建立一個新的框架。buttons_frame = tkinter.Frame,它屬於我們上節課建立的主框架mainframe中。也就是說,這個新的按鈕框架在mainframe中。
    def build_buttons(self):
        buttons_frame = tkinter.Frame(self.mainframe)
然後我們把這個按鈕框架放在主框架網格的第2行,第0列,也就是最後一行。它的粘性,東南西北,然後我希望它被填充10。
    def build_buttons(self): buttons_frame = tkinter.Frame(self.mainframe)  buttons_frame.grid(row = 2, column = 0, sticky = 'nsew',padx = 10, pady = 10)
現在,讓我們配置我們的按鈕框架的網格,我們只有一行,這一行不會調整大小。所以,它的行的權重為0,我們之前已經設定好了,所以這裡不需要設定,現在我們來看看列。這裡列的大小是隨時改變的,所以列0和列1都將有1的權重,
        buttons_frame.grid(row = 2, column = 0, sticky = 'nsew',padx = 10, pady = 10)         buttons_frame.columnconfigure(0, weight=1)
        buttons_frame.columnconfigure(1, weight=1)
現在,讓我們來構建按鈕。我們將有一個start_button,然後呼叫tkinkter.Button,它將屬於buttons_frame框架,它的文字是start, 然後,讓我們做一個stop_button。文字將是Stop.
buttons_frame.columnconfigure(1, weight=1)           self.start_button = tkinter.Button(             buttons_frame,             text = 'start'
        )         self.stop_button = tkinter.Button(             buttons_frame,             text='stop'         )
現在讓我們為按鈕分配網格, start_button.grid,我想要它在行0和列0.然後我想它是兩側變化。接著,對於stop_button也差不多。唯一的區別就是它在列1,而不是列0。
        self.stop_button = tkinter.Button( buttons_frame, text='stop' )         self.start_button.grid(row = 0, column = 0, sticky = 'ew')         self.stop_button.grid(row=0, column=1, sticky='ew')
所以,讓我們執行它看看,沒毛病。 所以,我們可以點選start。我們可以點選stop。這裡不做發生什麼,沒關係,後面我們再來新增命令。 那麼,現在,我們來開始寫計時器.所以我們在這裡,我們將呼叫self.build_timer。
        self.build_gird() self.build_banner() self.build_buttons()         self.build_timer()
然後,我們來實現這個函式。def build_timer。我想在這裡建立一個Label標籤。計時器將屬於主框架,因為我們會把它放在網格的中間.文字現在設為TIMER,然後,給它一個大字型。字型是微軟雅黑,大小是36個畫素高。接著,我們把定時器放入到網格中.我們希望它在行1,列0.它粘到所有四個方向。
        self.stop_button.grid(row=0, column=1, sticky='ew')   def build_timer(self): timer = tkinter.Label( self.mainframe, text = 'TIMER', font = ('微軟雅黑', 36) ) timer.grid(row=1, column=0,sticky='nsew')
執行看下效果,雖然。現在,我們有定時器,我們可以調整它的大小,位置也保持在中間,但問題是,我們希望有一個時鐘在這裡不停的變化。所以,我們需要建立一個變數。 所以讓我們來到建構函式中,我們建立一個timer_text,它將是StringVar也就是字串型別:.
        self.mainframe.pack(fill = tkinter.BOTH, expand = True)           self.timer_text = tkinter.StringVar()   self.build_gird()
然後下來這裡,定時器的文字就不再是TIMER了 ,它將是我們剛剛建立的變數self.timer_text.get.
    def build_timer(self): timer = tkinter.Label( self.mainframe, text = self.timer_text.get(), font = ('微軟雅黑', 36) )
那麼,要得到實際的計數。我們還需要一個變數來記錄時間。讓我們回到建構函式,讓我們建立另一個變數。我們會說self.time_left,它是一個IntVar 因為秒數,它總是一個整數。
        self.timer_text = tkinter.StringVar()         self.time_left = tkinter.IntVar()
現在我們來初始化這個變數,我們知道一個番茄鐘的時間是25分鐘,一分鐘有60秒,所以,在這裡,在我們的類外面,我要定義一個常量,DEFAULT_GAP 。所以它的值是60 * 25:
import tkinter   DEFAULT_GAP = 60 * 25   class Pymodoro:
然後在這裡,我建立了這個time_left,現在我要設定它。設定為DEFAULT_GAP.
        self.timer_text = tkinter.StringVar() self.time_left = tkinter.IntVar() self.time_left.set(DEFAULT_GAP)
現在,番茄鐘的預設剩餘時間是25分鐘,我已經設定了它。那麼這節課先到這裡。 更多精彩內容盡在視訊中! 本文固定連結:http://www.oxox.work/web/tkinter/ui-create/ | 虛幻大學

檢視原文:http://www.oxox.work/web/tkinter/ui-create/