Python 自帶了 Tkinter 模塊,可以用來開發 Python 的 GUI 應用程序。
一、Tkinter 的基本結構
Tkinter 會創建一個主窗口(MainWindow),可以在窗口中添加控件。控件包括標籤(Label)、按鈕(Button)、文本框(Entry)、列表框(Listbox)、滾動條(Scrollbar)、菜單(Menu)、對話框(Dialog) 等;這些控件都繼承自 tkinter.Widget。
下面是一個簡單的 Tkinter 程序。
import tkinter as tk # 創建主窗口 root = tk.Tk() # 創建標籤 label = tk.Label(root, text="Hello, Tkinter!") # 將標籤添加到主窗口 label.pack() # 進入消息循環 root.mainloop()
運行這段代碼,會創建一個窗口,窗口上有一行文本 “Hello, Tkinter!”
二、控件的布局和事件處理
Tkinter 中控件的布局通過幾何管理器來控制,常用的幾何管理器有 pack、grid 和 place。其中 pack 是最簡單的管理器,可以自動將控件填充到父容器中。
對於事件處理,可以通過綁定事件處理函數來實現。下面是一個帶按鈕的程序,當按下按鈕時,會在標籤上顯示文本 “Hello, Tkinter!”
import tkinter as tk def show_message(): label.config(text="Hello, Tkinter!") # 創建主窗口 root = tk.Tk() # 創建標籤 label = tk.Label(root, text="") # 創建按鈕 button = tk.Button(root, text="Click me!", command=show_message) # 將標籤和按鈕添加到主窗口 label.pack() button.pack() # 進入消息循環 root.mainloop()
三、用 Tinker 快速創建圖形化界面
Tkinter 是 Python 自帶的 GUI 庫,但它的 API 非常底層,需要處理很多細節。PyQt、wxPython 等庫封裝了更高層次的 API,能夠快速創建複雜的圖形化界面。而 Python Tinker 則是在 Tkinter 的基礎上封裝了更高級的 API,可以更快速地開發 GUI 應用程序。
下面是一個使用 Tinker 創建的簡單程序,包括一個菜單和一個標籤,當用戶選擇菜單項時,標籤會顯示對應的文本。
import tkinter as tk from tkinter import ttk # 導入 ttk,因為 tk 中沒有 Combobox 控件 def change_message(event): index = combo.current() message = messages[index] label.config(text=message) # 創建主窗口 root = tk.Tk() # 創建菜單 menu = tk.Menu(root) root.config(menu=menu) file_menu = tk.Menu(menu) menu.add_cascade(label="File", menu=file_menu) file_menu.add_command(label="New") file_menu.add_command(label="Save") file_menu.add_command(label="Exit", command=root.quit) # 創建下拉框和標籤 messages = ["Hello, Tinker!", "Goodbye, Tinker!"] combo = ttk.Combobox(root, values=messages) combo.current(0) label = tk.Label(root, text="") # 將下拉框和標籤添加到主窗口 combo.pack() label.pack() # 綁定事件處理函數 combo.bind("<>", change_message) # 進入消息循環 root.mainloop()
在這個程序中,我們通過 ttk 模塊創建了 Combobox 下拉框控件,同時添加了菜單。
四、小結
Python Tinker 這個 GUI 庫可以幫助我們更快速地開發 Python 的圖形化界面程序。通過上面的示例,我們可以看到,使用 Tinker 相對於純 Tkinter 來說,代碼更為簡潔,同時也提供了更高層次的 API。當然,如果需要開發更為複雜的 GUI 應用程序,還是建議使用其他高級 GUI 庫。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/156505.html