• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

Python tkinter 視窗程式設計教學:Hello World

介紹如何在 Python 中使用 tkinter 模組,開發具有圖形介面(GUI)的視窗程式。


tkinter(代表 Tk interface)是 Python 中最基本的 Tk 圖形化工具標準模組,在多數的 UNIX/Linux、Mac OS 以及 Windows 系統都可以使用。

檢查 tkinter 環境

若要確認自己的 Python 中是否有安裝好 tkinter 模組,可以在系統的命令列中執行 python 並引入 tkinter 模組,若 tkinter 有安裝好的話,就會出現一個簡單的 Tk 示範視窗,並且顯示 tkinter 的版本:

# 測試 Python 的 tkinter 模組
python -m tkinter
tkinter 示範視窗
tkinter 示範視窗

Hello World

以下是一個以 tkinter 建立視窗的 hello world 範例程式:

# 引入 tkinter 模組
import tkinter as tk

# 建立主視窗 Frame
window = tk.Tk()

# 設定視窗標題
window.title('Hello World')

# 設定視窗大小為 300x100,視窗(左上角)在螢幕上的座標位置為 (250, 150)
window.geometry("300x100+250+150")

# 執行主程式
window.mainloop()

在這裡我們以 tk.Tk 函數建立應用程式的主視窗,接著設定各種視窗的屬性,最後呼叫 mainloop 函數運行視窗程式,執行之後就會顯示一個這樣的視窗:

Hello World 視窗
Hello World 視窗

按鈕(Button)

如果要在 tkinter 的視窗程式中加入按鈕,可以使用 Button 這個元件,以下是使用範例:

import tkinter as tk

# 自訂函數
def hello():
    print("Hello, world.")

window = tk.Tk()
window.title('Hello World')
window.geometry("300x100+250+150")

# 建立按鈕
button = tk.Button(window,          # 按鈕所在視窗
                   text = 'Hello',  # 顯示文字
                   command = hello) # 按下按鈕所執行的函數

# 以預設方式排版按鈕
button.pack()

window.mainloop()

在建立 Tk 視窗的各種元件時,都會需要指定其父元件,以此例來說,我們要將按鈕放在主視窗之中,所以就將按鈕的父元件指定為 window。建立好按鈕之後,還必須呼叫排版相關的函數(pack),才會將元件真正放入父元件之中。

使用 Button 時除了以 text 參數設定顯示文字之外,最重要的就是要使用 command 參數指定按下按鈕時所要呼叫的函數,這裡我們將呼叫函數指定為自己定義的 hello 函數,因此當按下該按鈕時,就會自動執行 hello 函數的內容,在命令列輸出一些訊息。

按鈕
按鈕

這是命令列輸出的訊息,如果希望以跳出訊息視窗的方式顯示訊息,可以使用下方介紹的訊息視窗。

自訂函數輸出訊息
自訂函數輸出訊息

標示文字(Label)

如果要在視窗中加入文字,可以使用 Label 這個元件,以下是使用範例:

import tkinter as tk

window = tk.Tk()
window.title('Hello World')
window.geometry("300x100+250+150")

# 標示文字
label = tk.Label(window,                 # 文字標示所在視窗
                 text = 'Hello, world')  # 顯示文字

# 以預設方式排版標示文字
label.pack()

window.mainloop()
標示文字
標示文字

如果需要更改文字的字型、大小與顏色等屬性,只要調整對應的參數即可:

import tkinter as tk

window = tk.Tk()
window.title('Hello World')
window.geometry("300x100+250+150")

# 標示文字
label = tk.Label(window,                 # 文字標示所在視窗
                 text = 'Hello, world',  # 顯示文字
                 bg = '#EEBB00',         #  背景顏色
                 font = ('Arial', 12),   # 字型與大小
                 width = 15, height = 2) # 文字標示尺寸   

# 以預設方式排版標示文字
label.pack()

window.mainloop()
標示文字
標示文字

輸入欄位(Entry)

若要讓使用者輸入文字資料,可以運用 Entry 元件,以下是使用範例:

import tkinter as tk

def onOK():
    # 取得輸入文字
    print("Hello, {}.".format(entry.get()))

window = tk.Tk()
window.title('Hello World')
window.geometry("300x100+250+150")

# 標示文字
label = tk.Label(window, text = '姓名')
label.pack()

# 輸入欄位
entry = tk.Entry(window,     # 輸入欄位所在視窗
                 width = 20) # 輸入欄位的寬度
entry.pack()

# 按鈕
button = tk.Button(window, text = "OK", command = onOK)
button.pack()

window.mainloop()
輸入欄位
輸入欄位

使用在 Entry 元件中輸入的文字,在程式中可以透過其 get 函數來取得。

自訂函數輸出訊息
自訂函數輸出訊息

訊息視窗

如果希望以跳出的視窗來顯示訊息文字,可以使用 tkinter.messagebox 這個模組,以下是使用範例:

import tkinter as tk

# 引入訊息視窗模組
import tkinter.messagebox

def onOK():
    msg = "Hello, {}.".format(entry.get())
    tkinter.messagebox.showinfo(title = 'Hello', # 視窗標題
                                message = msg)   # 訊息內容

window = tk.Tk()
window.title('Hello World')
window.geometry("300x100+250+150")

# 標示文字
label = tk.Label(window, text = '姓名')
label.pack()

# 輸入欄位
entry = tk.Entry(window, width = 20)
entry.pack()

# 按鈕
button = tk.Button(window, text = "OK", command = onOK)
button.pack()

window.mainloop()

這個例子中,我們將之前的 print 函數替換為 tkinter.messagebox,將原本從命令列輸出的訊息,改以跳出的訊息視窗來顯示。當按下按鈕之後,就會跳出一個這樣的訊息視窗:

訊息視窗
訊息視窗

參考資料:Python Tk、runoob.com、TutorialsTeacher、TechBridge 技術共筆部落格

分類:Python

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide