2022年11月17日 星期四

Python Tkinter 第一個程式

 第一個Tkinter程式

源自於 中國http://c.biancheng.net/tkinter/the-first-tkinter.html

本節使用 Tkinter 編寫第一個 GUI 程式,通過對程式碼的詳細解讀來講解 Tkinter 的編碼邏輯,以及使用 Tkinter 過程中的一些注意事項。

 

一個最簡單的 Tkinter 程式至少應包含以下四個部分:

·        導入 tkinter 模組

·        創建主視窗,也稱 root 視窗(即根視窗)

·        添加人機交互控制項,同時編寫相應的事件函數

·        通過主迴圈(mainloop)來顯示主視窗


上述四個步驟中,只有第三步屬於 Tkinter 程式設計的重點,其餘三個步驟屬於固定的代碼格式,如下所示:

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

import tkinter as tk

# 調用Tk()創建主窗口

root_window =tk.Tk()

# 給主視窗起一個名字,也就是視窗的名字

root_window.title('https://alex9ufoexploer.blogspot.com/search/label/python%20Tkinter')

root_window.mainloop()


程式運行後結果如下:



1:程式運行結果


上述代碼創建了一個沒有添加任何交互控制項的 Tkinter 程式,它也是最簡單的 GUI 程式。這裡的主視窗相當於畫板,其他的控制項都要建立在主視窗之上。主迴圈也稱“消息迴圈”或“事件迴圈”其的作用是讓主視窗處於顯示狀態。

下面我們對上述程式做一下簡單的改動,添加一些簡單的交互控制項(比如文本和按鈕),代碼如下所示:

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

import tkinter as tk

root_window =tk.Tk()

# 設置視窗title

root_window.title('https://alex9ufoexploer.blogspot.com')

# 設置視窗大小:寬x高,注,此處不能為 "*",必須使用 "x"

root_window.geometry('450x300')

# 更改左上角視窗的的icon圖示,載入logo標

root_window.iconbitmap('t1.ico')

# 設置主視窗的背景顏色,顏色值可以是英文單詞,或者顏色值的16進制數,除此之外還可以使用Tk內置的顏色常量

root_window["background"] = "#C9C9C9"

# 添加文本內,設置字體的前景色和背景色,和字體類型、大小

text=tk.Label(root_window,text="alex9ufoexploer,歡迎您",bg="yellow",fg="red",font=('Times', 20, 'bold italic'))

# 將文本內容放置在主視窗內

text.pack()

# 添加按鈕,以及按鈕的文本,並通過command 參數設置關閉視窗的功能

button=tk.Button(root_window,text="關閉",command=root_window.quit)

# 將按鈕放置在主視窗內

button.pack(side="bottom")

#進入主迴圈,顯示主視窗

root_window.mainloop()

程式的運行結果如下:


2:程式運行結果

下面對上述示例進行簡單的分析:

1) 主視窗設置

上述程式,主要對主視窗的大小、背景顏色以及左上角的 icon 圖示進行了設置,這些代碼簡潔易讀,很容易理解。

2) 添加文本

上述程式中,我們添加了一行文本“C語言中文網,歡迎您”,此處使用了標籤 Lable 控制項來實現。需要注意的是,當成功創建標籤(文本)物件後,必須使用 pack 方法將其放置在主視窗內(pack 方法又稱視窗佈局管理器)。主視窗是其他一切控制項的基礎,其他內容元素都要附著在主視窗上,就如同在一塊畫板上添加描述文字一樣。下面再次回顧一下放置文本的代碼:

1.  # 添加文本標籤,text參數指定內容

2.  text=tk.Label(root_window,text="alex9ufoexploer,歡迎您",bg="yellow",fg="red",font=('Times', 20, 'bold italic'))

3.  # 將標籤物件放置在主視窗內

4.  text.pack()

3) 添加按鈕

添加按鈕的邏輯和添加文本標籤類似,值得注意的是,按鈕控制項通過command參數實現了“關閉視窗”功能,代碼如下:

1.  # 添加按鈕

2.  button=tk.Button(root_window,text="關閉",command=root_window.quit)

3.  # 這裡將按鈕放置在主視窗的底部

4.  button.pack(side="bottom")

Tkinter 提供了十餘種常用類型的控制項,每個控制項都有相應的屬性,比如顏色(前景色/背景色/顏色常量)、文本內容、字體樣式、控制項大小、控制項樣式、控制項命令等等,這些會在後續內容做詳細介紹。


4) 獨立運行tkinter程式

上述程式是在 IDLE 環境下運行的,但如果脫離了開發環境,怎麼做才能讓 Tkinter 程式獨立運行呢?

Windows 系統下,我們可以使用 Python 解譯器來運行程式檔,首先將程式檔保存至桌面,然後啟動 Python 解譯器,執行程式,如下所示:

C:\Users\Administrator>python C:\Users\Administrator\Desktop\hello.py

上述方法需要依賴於 Python 解譯器,當我們關閉解譯器視窗時,GUI 程式也隨之關閉。

如果想讓程式獨立的運行在 Windows 環境下,而不受 Python 解譯器的影響,就需要將程式碼存儲為
.pyw檔,並使用 Pythonw.exe 來執行程式,如下所示:

C:\Users\Administrator>pythonw.exe C:\Users\Administrator\Desktop\hello.py

執行後,當我們關閉控制台視窗時(即執行程式的 CMD 介面),GUI 程式不會隨之而關閉,而是獨立地顯示在桌面上。

 


沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...