一、Tk簡介
Tkinter是Python編程語言的標準界面庫,是Tk GUI工具包的Python介面。它提供了Python的標準GUI工具包,同時也是Python語言綁定的Tk圖形用戶界面工具集。Tkinter是Python自帶的圖形界面庫,對於Python的初學者而言,使用Tkinter較易上手,因為它內置於Python環境中,使用方便、資源充足。Tkinter的好處是跨平台性,它可以運行在Windows、Linux和Unix等操作系統平台之上,開發時無須在不同的平台上區別對待,極大地方便了應用的開發和使用。
下面是Tkinter應用程序的代碼模板:
# 導入Tkinter模塊 import tkinter as tk # 創建主窗口並設置標題 window = tk.Tk() window.title('窗口標題') # 窗口大小和位置 window.geometry('400x300+200+100') # 運行主循環 window.mainloop()
上述代碼創建了一個窗口並設置了窗口的標題、大小和位置,最後運行了主循環。一旦運行主循環,窗口就會顯示出來,創建完成。
二、Tkinter組件
Tkinter支持多種常用的GUI組件:
- Label:標籤組件,顯示文本和圖像
- Button:按鈕組件,響應用戶點擊事件
- Entry:單行文本框組件,用戶可以在其中輸入信息
- Text:多行文本框組件,用戶可以在其中輸入和查看多行文本信息
- Menu:菜單組件,提供了下拉式菜單
- Canvas:畫布組件,允許用戶自由繪製圖形和渲染圖像
- Frame:框架組件,用於布局其他組件
下面是一個簡單的Tkinter程序,它包含了Label、Button和Entry組件,當用戶點擊按鈕時,會在Entry中顯示Label的文本。
import tkinter as tk window = tk.Tk() window.title('Tkinter組件') window.geometry('400x300+200+200') # 創建Label組件 label = tk.Label(window, text='Hello World!', font=('Arial', 18)) label.pack(pady=20) # 創建Entry組件 entry = tk.Entry(window, width=10, font=('Arial', 16)) entry.pack(pady=10) # 創建Button組件 def show(): entry.delete(0, tk.END) entry.insert(0, label['text']) button = tk.Button(window, text='顯示文本', width=10, height=2, command=show) button.pack() window.mainloop()
上述程序創建了一個帶有Label、Button和Entry組件的窗口,當用戶點擊按鈕時,程序會在Entry中顯示Label的文本。
三、Tkinter布局
Tkinter提供了多種布局管理器,用於管理窗口中的組件。常用的布局管理器有:
- Pack布局管理器:按照添加順序排列組件
- Grid布局管理器:按照行列排列組件
- Place布局管理器:通過指定位置和大小布局組件
下面是一個使用Grid布局管理器的Tkinter程序,它包含了多個Label和Entry組件,並將它們按照網格排列。
import tkinter as tk window = tk.Tk() window.title('Tkinter布局') window.geometry('400x300+200+200') # 創建Label和Entry組件 label1 = tk.Label(window, text='學號', font=('Arial', 16)) label1.grid(row=0, column=0, padx=10, pady=10) entry1 = tk.Entry(window, width=10, font=('Arial', 16)) entry1.grid(row=0, column=1, padx=10, pady=10) label2 = tk.Label(window, text='姓名', font=('Arial', 16)) label2.grid(row=1, column=0, padx=10, pady=10) entry2 = tk.Entry(window, width=10, font=('Arial', 16)) entry2.grid(row=1, column=1, padx=10, pady=10) label3 = tk.Label(window, text='年齡', font=('Arial', 16)) label3.grid(row=2, column=0, padx=10, pady=10) entry3 = tk.Entry(window, width=10, font=('Arial', 16)) entry3.grid(row=2, column=1, padx=10, pady=10) label4 = tk.Label(window, text='性別', font=('Arial', 16)) label4.grid(row=3, column=0, padx=10, pady=10) entry4 = tk.Entry(window, width=10, font=('Arial', 16)) entry4.grid(row=3, column=1, padx=10, pady=10) window.mainloop()
上述程序創建了一個帶有多個Label和Entry組件的窗口,並將它們按照網格排列。通過更改grid()方法中的row、column、padx和pady參數,可以改變組件在網格內的位置和間距。
四、Tkinter事件
Tkinter中的組件可以響應用戶的事件,例如滑鼠點擊、鍵盤輸入等事件。在Tkinter中,事件是通過定義回調函數(callback)來處理的。
下面是一個響應Button點擊事件的Tkinter程序,當用戶點擊Button時,程序會在Terminal埠輸出一句話。
import tkinter as tk window = tk.Tk() window.title('Tkinter事件') window.geometry('400x300+200+200') # 創建Button組件 def callback(): print('Button被點擊了') button = tk.Button(window, text='點擊我', width=10, height=2, command=callback) button.pack(pady=20) window.mainloop()
上述程序在Button組件中定義了一個回調函數,當用戶點擊Button時,就會觸發回調函數,執行其中的代碼。在這個回調函數中,我們輸出了一句話來響應事件。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/231798.html