Python tkinter 新手入門教學

本篇 Python tkinter 視窗程式新手入門教學彙整了 ShengYu 過往學習 tkinter 的知識,在此整理成 tkinter 教學目錄以便日後的查詢與新手入門學習,在本篇 Python tkinter 教學裡你可以快速地學習 tkinter GUI 圖形介面視窗程式設計。

以下 Python tkinter 教學目錄將分為這幾部分,

  • Python tkinter 基本視窗
  • Python tkinter Label 標籤
  • Python tkinter Button 按鈕
  • Python tkinter Entry 文字輸入框
  • Python tkinter Combobox 下拉式選單
  • Python tkinter messagebox 訊息框

那我們開始吧!

Python tkinter 基本視窗

Python3 預設內建已經提供了 tkinter 模組,所以不需額外安裝什麼模組就可以開始寫成 tkinter 視窗程式囉!

接下來我們要先學習一下 tkinter 基本的視窗程式,一開始先使用 tk.Tk() 建立主視窗,之後用 title() 設定這個視窗的名稱,如果要改變視窗大小的話可以使用 geometry() 函式,例如下例中將視窗設定成 寬200x高150 的大小,最後呼叫 mainloop() 進入 tkinter 的主事件循環 (Event Loop),

python3-hello-world.py
1
2
3
4
5
6
7
8
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
root = tk.Tk()
root.title('hello world')
root.geometry('200x150')

root.mainloop()

下圖為 tkinter 基本視窗的呈現結果,

如果要寫成 class 類別的話可以這樣寫,如下範例所示,建立一個 MyApp 類別繼承 tk.Tk,不熟悉繼承的話可以參考 Python 繼承 inheritance 的用法這篇,之後在 MyApp 的 initUI() 成員函式裡使用 title() 讓視窗名稱上顯示 hello world 字樣,使用 geometry() 將視窗設定為 寬200x高150 的大小,最後要使用 mainloop() 來進入 tkinter 的主事件循環 (Event Loop),

python3-hello-world2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk

class MyApp(tk.Tk):
def __init__(self):
super().__init__()
self.initUI()

def initUI(self):
self.title('hello world')
self.geometry('200x150')

if __name__ == '__main__':
app = MyApp()
app.mainloop()

延伸閱讀:Python 物件導向:繼承 inheritance 的用法
這樣我們就完成的一個基本的 tkinter 視窗程式囉!接著我們就來學習一下 tkinter 裡常見的 UI 元件吧!

Python tkinter Label 標籤

Label 標籤是很基本的 UI 元件,主要是用來顯示文字的,也常常用來跟其它 UI 元件搭配,以下為 Python tkinter Label 按鈕的範例程式,使用 tk.Label 建立一個標籤並給這個標籤一個顯示的文字 hello world,同時也可以設定該標籤的字型跟字型大小,

python3-label2.py
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
root = tk.Tk()
root.title('my window')
root.geometry('200x150')

mylabel = tk.Label(root, text='hello world', font=('Arial', 18))
mylabel.pack()

root.mainloop()

下圖為 tkinter Label 標籤的呈現結果,

詳細的 tkinter Label 教學可以看 tkinter label 標籤用法與範例 這篇。

Python tkinter Button 按鈕

Button 按鈕與按鈕事件是視窗程式設計的學習必學的 UI 元件,以下為 Python tkinter Button 按鈕的範例程式,使用 tk.Button 建立一個按鈕後並指定 command=button_event 事件處理函式,而按鈕事件發生時就會呼叫到 button_event 以便處理按下該按鈕時要處理的邏輯,這個範例是按下按鈕時會把按鈕的文字改成 hello world

python3-button2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
root = tk.Tk()
root.title('my window')
root.geometry('200x150')

def button_event():
mybutton['text'] = 'hello world'

mybutton = tk.Button(root, text='button', command=button_event)
mybutton.pack()

root.mainloop()

下圖為 tkinter Button 按鈕按下後觸發事件的呈現結果,

詳細的 tkinter Button 教學可以看 tkinter button 按鈕用法與範例 這篇。

Python tkinter Entry 文字輸入框

要取得使用者的輸入就需要使用 Entry 文字輸入框這個 UI 元件,以下為 Python tkinter Entry 按鈕的範例程式,

python3-entry5.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk

root = tk.Tk()
root.title('my window')

mylabel = tk.Label(root, text='Name:')
mylabel.grid(row=0, column=0)
myentry = tk.Entry(root)
myentry.grid(row=0, column=1)

mylabel2 = tk.Label(root, text='Password:')
mylabel2.grid(row=1, column=0)
myentry2 = tk.Entry(root, show='*')
myentry2.grid(row=1, column=1)

mybutton = tk.Button(root, text='Login')
mybutton.grid(row=2, column=1)

root.mainloop()

下圖為 tkinter Entry 文字輸入框的呈現結果,

詳細的 tkinter Entry 教學可以看 tkinter Entry 文字輸入框用法與範例 這篇。

Python tkinter Combobox 下拉式選單

Combobox 提供下拉式選單給使用者選取選項,跟 QListBox 相比 Combobox 可以節省很多版面的空間,也讓使用者清楚知道目前的選取的項目,以下為 Python tkinter Combobox 下拉式選單的範例程式,

python3-combobox2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
import tkinter.ttk as ttk

root = tk.Tk()
root.title('my window')
root.geometry('200x150')

mycombobox = ttk.Combobox(root)
mycombobox['values'] = ['apple','banana','orange','lemon','tomato']
mycombobox.pack(pady=10)
mycombobox.current(0)

root.mainloop()

下圖為 tkinter Combobox 下拉式選單的呈現結果,

詳細的 tkinter Combobox 教學可以看 tkinter Combobox 用法與範例 這篇。

Python tkinter messagebox 訊息框

messagebox 訊息框是蠻常見的 UI 元件,經常被使用來顯示提示訊息給使用者,以下為 Python tkinter messagebox 訊息框的範例程式,

python3-messagebox.py
1
2
3
4
5
6
7
8
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import messagebox

root = tk.Tk()
root.withdraw()
messagebox.showinfo('my messagebox', 'hello world')

下圖為 tkinter messagebox 訊息框的呈現結果,

詳細的 QMessageBox 訊息框教學可以看 tkinter messagebox 用法與範例 這篇。

以上就是 Python tkinter 新手入門教學介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!