本教學文章會先介紹一些常用的Python GUI 套件工具,接著會用幾個範例呈現 Python Tkinter控制項元件的用法,最後會以一個簡易的四則運算機當例子作為結尾。
常見的 Python GUI 套件工具:
- Tkinter:為Python內建的GUI套件。
- wxPython :包裝了跨平台的GUI套件wxWidgets,是個開源的套件。
- 其他:可參考 GUI Programming in Python。
建立Tkinter視窗有幾個步驟:
- 匯入 Tkinter 模組。
- 建立主視窗。
- 建立視窗控制項元件。
- 進入事件處理迴圈以處理不同的視窗訊息。
1 2 3 4 5 6 7 8 9 10 11 12 | #!/usr/bin/python # 步驟一:匯入 tkinter 模組。 import tkinter # 步驟二:建立主視窗。 mainWin = tkinter.Tk() # 視窗標題 mainWin.title("Hello 雲林SONG") # 視窗大小 mainWin.geometry("320x240") # 步驟四: 進入事件處理迴圈。 mainWin.mainloop() |
執行結果如下:
練習題:
修改視窗的標題(Title)。
修改視窗的大小(Geometry)。
好,接下來開始慢慢加進一些控制項吧。
標籤 Label
Label的用法說明如下:
labelVariable = Label(主元件,參數一,參數二...)
例如若想在第一個 Tkinter 視窗增加一個標籤,語法如下:
1 2 | labelVariable = tkinter.Label(mainWin, text="這是標籤") labelVariable.pack() |
按鈕 Button
Button的用法說明如下:
buttonVariable = Button(主元件,參數一,參數二...)
例如若想在第一個 Tkinter 視窗增加一個按鈕,語法如下:
詳細的參數說明可參考 https://www.tutorialspoint.com/python/tk_button.htm。
buttonVariable = Button(主元件,參數一,參數二...)
例如若想在第一個 Tkinter 視窗增加一個按鈕,語法如下:
1 2 | buttonVariable = tkinter.Button(mainWin, text="這是按鈕") buttonVariable.pack() |
文字方塊 Entry
文字方塊的用法說明如下:
entryVariable = Entry(主元件,參數一,參數二...)
例如若想在第一個 Tkinter 視窗增加一個文字方塊,語法如下:
詳細的參數說明可參考 https://www.tutorialspoint.com/python/tk_entry.htm。
單選按鈕 RadioButton
單選按鈕的用法說明如下:
radioButtonVariable = Radiobutton(主元件,參數一,參數二...)
例如若想在第一個 Tkinter 視窗增加一個單選按鈕,語法如下:
詳細的參數說明可參考 https://www.tutorialspoint.com/python/tk_radiobutton.htm。
將以上的範例整合在一起的結果如下圖:
若按下按鈕程式是不會有任何動作的,這是因為還需要加上處理按鈕按下的程式碼,此部分的觀念可參考筆者的文章:程式設計師需要知道的圖形使用者介面(GUI)觀念。在 Tkinter 中,每個元件(Widget)都有command參數,以Button為例,就是設定按鈕按一下(Click)時會處理的CallBack function。本例的按鈕CallBack function如下:
接著修改Button的參數:
此時,按下按鈕就會出現如下圖的MessageBox視窗(需要import tkinter.messagebox):
entryVariable = Entry(主元件,參數一,參數二...)
例如若想在第一個 Tkinter 視窗增加一個文字方塊,語法如下:
1 2 | entryVariable = tkinter.Entry(mainWin, text="這是文字方塊") entryVariable.pack() |
詳細的參數說明可參考 https://www.tutorialspoint.com/python/tk_entry.htm。
單選按鈕的用法說明如下:
radioButtonVariable = Radiobutton(主元件,參數一,參數二...)
例如若想在第一個 Tkinter 視窗增加一個單選按鈕,語法如下:
1 2 | radioButtonVariable = tkinter.Radiobutton(mainWin, text="這是單選按鈕") radioButtonVariable.pack() |
詳細的參數說明可參考 https://www.tutorialspoint.com/python/tk_radiobutton.htm。
若按下按鈕程式是不會有任何動作的,這是因為還需要加上處理按鈕按下的程式碼,此部分的觀念可參考筆者的文章:程式設計師需要知道的圖形使用者介面(GUI)觀念。在 Tkinter 中,每個元件(Widget)都有command參數,以Button為例,就是設定按鈕按一下(Click)時會處理的CallBack function。本例的按鈕CallBack function如下:
1 2 3 | # 按鈕 Click 事件處理函式 def btnCallBack(): tkinter.messagebox.showinfo( "雲林SONG", "按鈕Click") |
接著修改Button的參數:
1 2 | # 建立按鈕 buttonVariable = tkinter.Button(mainWin, text="這是按鈕", command=btnCallBack) |
此時,按下按鈕就會出現如下圖的MessageBox視窗(需要import tkinter.messagebox):
好,最後使用上述的Widget來製作一個簡易的四則運算機,UI的設計方式如下:
使用Grid manager來做UI版面的排版,此部分請參考 http://effbot.org/tkinterbook/grid.htm。
程式執行影片:
程式碼:
參考資料:
沒有留言:
張貼留言