跳至內容

Tkinter

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
Tkinter
開發者Fredrik Lundh[1]
編程語言Python
操作系統跨平台
許可協議Python許可證[2]
網站docs.python.org/3/library/tkinter.html

TkinterTk GUI工具包的Python綁定包。它是Tk GUI工具包的標準Python接口[3],並且是Python的業界標準GUI工具包。[4]Tkinter同時也包含在Python的Linux、Microsoft Windows和Mac OS X標準庫中。Tkinter的名字來自Tk interface。

描述

和大多數現代Tk綁定包一樣,Tkinter是透過嵌入在Python解釋器中的完整Tcl解釋器來包裝Python實現的。Tkinter的調用被翻譯成Tcl命令,這些命令被提供給這個嵌入式解釋器,從而使得在單個程序中可混合Python和Tcl。

它也有幾種流行的GUI庫可用作替代,例如wxPythonPyQtPySidePygamePygletPyGTK

定義

該詞在不同的文中具有不同的含義,通常指用戶顯示屏上的某處矩形區域。

頂層窗口

指主窗口的子窗口。它將以桌面環境的標準框架和控件裝飾。它可以在桌面上移動,通常也可以調整大小。

小工具

指圖形用戶界面中構成應用程序的任何構建塊。

  • 核心小部件:容器:框架、標籤框架、頂層、窗格窗口。按鈕:按鈕、單選按鈕、複選按鈕(複選框)和菜單按鈕。文本小部件:標籤、消息、文本。條目小部件:縮放、滾動條、列表框、滑塊、旋轉框、條目(單行)、選項菜單、文本(多行)和畫布(矢量和像素圖形)。
  • 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指令英語Interpreter directive,允許在自執行時選擇合適的解釋器。[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行:啟動程序的主循環,監聽鼠標和鍵盤事件。

參考資料

  1. ^ Shipman, John W., Tkinter reference: a GUI for Python, New Mexico Tech Computer Center, 2010-12-12 [2012-01-11], (原始內容存檔於2014-07-03) 
  2. ^ Archived copy. [2013-11-13]. (原始內容存檔於2013-11-13). 
  3. ^ Tkinter — Python interface to Tcl/Tk — Python v2.6.1 documentation. [2009-03-12]. (原始內容存檔於2012-10-18). 
  4. ^ Tkinter - Pythoninfo Wiki. [2021-06-25]. (原始內容存檔於2020-06-16). 
  5. ^ Python issue #2983, "Ttk support for Tkinter". [2021-06-25]. (原始內容存檔於2010-04-19). 
  6. ^ Python subversion revision 69051, which resolves issue #2983 by adding the ttk module. 
  7. ^ Tkinter 8.5 reference: a GUI for Python. [2021-06-25]. (原始內容存檔於2016-12-04). 
  8. ^ Fleck, Dan. Tkinter – GUIs in Python (PDF). CS112. George Mason University. [18 August 2018]. (原始內容 (PDF)存檔於2020-08-09). 
  9. ^ Klein, Bernd. GUI Programming with Python: Events and Binds. www.python-course.eu. [18 August 2018]. (原始內容存檔於2021-07-20). 
  10. ^ PEP 397 — Python launcher for Windows — Python.org. [2017-06-07]. (原始內容存檔於2021-06-29). 

外部連結