Tkinter
Tkinter是Tk GUI工具包的Python綁定包。它是Tk GUI工具包的標準Python接口[3],並且是Python的業界標準GUI工具包。[4]Tkinter同時也包含在Python的Linux、Microsoft Windows和Mac OS X標準庫中。Tkinter的名字來自Tk interface。
開發者 | Fredrik Lundh[1] |
---|---|
編程語言 | Python |
操作系統 | 跨平台 |
許可協議 | Python許可證[2] |
網站 | docs |
描述
編輯和大多數現代Tk綁定包一樣,Tkinter是透過嵌入在Python解釋器中的完整Tcl解釋器來包裝Python實現的。Tkinter的調用被翻譯成Tcl命令,這些命令被提供給這個嵌入式解釋器,從而使得在單個程序中可混合Python和Tcl。
它也有幾種流行的GUI庫可用作替代,例如wxPython、PyQt、PySide、Pygame、Pyglet和PyGTK。
定義
編輯該詞在不同的文中具有不同的含義,通常指用戶顯示屏上的某處矩形區域。
頂層窗口
編輯指主窗口的子窗口。它將以桌面環境的標準框架和控件裝飾。它可以在桌面上移動,通常也可以調整大小。
小工具
編輯指圖形用戶界面中構成應用程序的任何構建塊。
- 核心小部件:容器:框架、標籤框架、頂層、窗格窗口。按鈕:按鈕、單選按鈕、複選按鈕(複選框)和菜單按鈕。文本小部件:標籤、消息、文本。條目小部件:縮放、滾動條、列表框、滑塊、旋轉框、條目(單行)、選項菜單、文本(多行)和畫布(矢量和像素圖形)。
- Tkinter 提供了三個允許顯示彈出對話框的模塊:tk.messagebox(確認、信息、警告和錯誤對話框)、tk.filedialog(單文件、多文件和目錄選擇對話框)和 tk.colorchooser(顏色選擇器)。
- Python 2.7和Python 3.1合併了Tk 8.5的「主題 Tk」(「ttk」)功能[5][6]。這使得Tk小部件可以輕鬆地主題化,使其看起來像運行應用程序的本機桌面環境,從而解決長期以來對Tk(以及因此對Tkinter)的批評。一些小部件是 ttk 獨有的,例如組合框、進度條和樹狀視圖小部件.
框架
編輯在Tkinter中,Frame(框架)小部件是複雜布局的基本組織單位。框架是一個矩形區域,可以包含其他小部件。
父小部件和子小部件
編輯創建任何小部件時,都會創建父子關係。例如,如果將文本標籤放置在框架內,則框架是標籤的父小部件。
小型應用程序
編輯這是一個帶有小部件的小型Python 3 Tkinter應用程序:[7]
#!/usr/bin/env python3
from tkinter import *
root = Tk() # 创建根窗口
w = Label(root, text="Hello, world!") # 创建一个带有单词的标签
w.pack() # 把标签放进窗口中
root.mainloop() # 开始主循环
對於 Python 2,唯一的區別是import命令中的「tkinter」是大寫的「Tkinter (頁面存檔備份,存於網際網路檔案館)」。[8]
創建過程
編輯創建小部件有四個步驟:[9]
創建
編輯在框架內創建一個小部件。
配置
編輯更改這個小部件的屬性。
打包
編輯將它打包到指定的位置,使其可見。開發人員還可以選擇使用 .grid()(row=整數,column=整數)(定義行和列來定位小部件,默認為 0)或.place()(relx=整數或小數,rely=整數或小數)(定義框架或窗口中的坐標)。
綁定
編輯將其綁定到函數或事件。
這些步驟通常被簡化,並且順序可能會不同。
簡單的程序
編輯這是一個在 Python 中使用面向對象的簡單的程序(使用Tcl 8.6,但MacOS上的Python默認不使用它):
#!/usr/bin/env python3
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.grid()
self.createWidgets()
def createWidgets(self):
self.mondialLabel = tk.Label(self, text='Hello World')
self.mondialLabel.config(bg="#00ffff")
self.mondialLabel.grid()
self.quitButton = tk.Button(self, text='Quit', command=self.quit)
self.quitButton.grid()
app = Application()
app.master.title('Sample application')
app.mainloop()
- 第1行:程序的Hashbang指令,允許在自執行時選擇合適的解釋器。[10]
- 第3行:將tkinter模塊導入程序的命名空間,但為其設置別名tk。
- 第6行:Application類繼承自Tkinter的Frame類。
- 第8行:定義設置Frame的函數。
- 第9行:調用父類Frame的構造函數。
- 第13行:定義小部件。
- 第14行:創建一個名為MondialLabel的標籤,其文本為「Hello World」。
- 第15行:將MondialLabel的背景顏色設置為青色。
- 第16行:將標籤放置在Application上,使其使用grid()幾何管理器方法可見。
- 第17行:創建一個帶有文字「Quit」的按鈕。
- 第18行:將按鈕放置在應用程序上。grid、place和pack都是使小部件可見的方法。
- 第21行:主程序從這裡開始,創建Application類的實例。
- 第22行:調用這個方法將窗口標題設置為「Sample application」。
- 第23行:啟動程序的主循環,監聽鼠標和鍵盤事件。
參考資料
編輯- ^ Shipman, John W., Tkinter reference: a GUI for Python, New Mexico Tech Computer Center, 2010-12-12 [2012-01-11], (原始內容存檔於2014-07-03)
- ^ Archived copy. [2013-11-13]. (原始內容存檔於2013-11-13).
- ^ Tkinter — Python interface to Tcl/Tk — Python v2.6.1 documentation. [2009-03-12]. (原始內容存檔於2012-10-18).
- ^ Tkinter - Pythoninfo Wiki. [2021-06-25]. (原始內容存檔於2020-06-16).
- ^ Python issue #2983, "Ttk support for Tkinter". [2021-06-25]. (原始內容存檔於2010-04-19).
- ^ Python subversion revision 69051, which resolves issue #2983 by adding the ttk module.
- ^ Tkinter 8.5 reference: a GUI for Python. [2021-06-25]. (原始內容存檔於2016-12-04).
- ^ Fleck, Dan. Tkinter – GUIs in Python (PDF). CS112. George Mason University. [18 August 2018]. (原始內容 (PDF)存檔於2020-08-09).
- ^ Klein, Bernd. GUI Programming with Python: Events and Binds. www.python-course.eu. [18 August 2018]. (原始內容存檔於2021-07-20).
- ^ PEP 397 — Python launcher for Windows — Python.org. [2017-06-07]. (原始內容存檔於2021-06-29).
外部連結
編輯- TkInter, Python Wiki, [2021-06-25], (原始內容存檔於2020-06-16)
- Tkinter GUI Tutorial (頁面存檔備份,存於網際網路檔案館):分別涵蓋每個小部件。
- Lundh, Fredrik, An Introduction to Tkinter, 1999 [2021-06-25], (原始內容存檔於2012-10-19)
- TkDocs (頁面存檔備份,存於網際網路檔案館):包括Python信息和教程
- Ferg, Stephen, Thinking in Tkinter, [2022-05-18], (原始內容存檔於2021-03-07)