Tkinter是Python中最常用的GUI(Graphical User Interface)工具包之一,它是Python標準庫中自帶的一部分,因此無需額外安裝。Tkinter提供了一系列的接口,幫助開發者快速實現圖形化界面。Tkinter擁有廣泛的應用範圍,可以應用於各種系統平台,它被廣泛應用於開發桌面應用、實現數據可視化等行業。
一、Tkinter基礎
1、創建一個簡單的GUI窗口
import tkinter as tk root = tk.Tk() # 創建一個根窗體 root.mainloop() # 啟動GUI程序循環
2、設置窗口標題和大小
import tkinter as tk
root = tk.Tk()
root.title("我的GUI窗體") # 設置窗口標題
root.geometry("600x400") # 設置窗口大小
root.mainloop()
3、在窗口中添加標籤(Label)
import tkinter as tk
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
label = tk.Label(root, text="歡迎使用Tkinter!")
label.pack() # 將標籤添加到窗口中
root.mainloop()
二、Tkinter中的常用控件
1、按鈕(Button)
import tkinter as tk
def on_button_click():
print("按鈕被點擊了!")
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
button = tk.Button(root, text="點擊我", command=on_button_click)
button.pack()
root.mainloop()
2、文本框(Entry)
import tkinter as tk
def on_button_click():
label.config(text="你好," + entry.get())
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
label = tk.Label(root, text="請輸入你的名字:")
label.pack()
entry = tk.Entry(root)
entry.pack()
button = tk.Button(root, text="確定", command=on_button_click)
button.pack()
root.mainloop()
3、選擇框(Checkbutton)
import tkinter as tk
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
var1 = tk.BooleanVar()
check1 = tk.Checkbutton(root, text="選擇1", variable=var1)
check1.pack()
var2 = tk.BooleanVar()
check2 = tk.Checkbutton(root, text="選擇2", variable=var2)
check2.pack()
root.mainloop()
4、滑動條(Scale)
import tkinter as tk
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
var = tk.DoubleVar()
scale = tk.Scale(root, variable=var, from_=0, to=100)
scale.pack()
root.mainloop()
5、菜單(Menu)
import tkinter as tk
def on_menu_click():
label.config(text="你選擇了" + var.get())
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
menubar = tk.Menu(root) # 創建菜單欄
var = tk.StringVar()
var.set("Python")
menu1 = tk.Menu(menubar, tearoff=0) # 創建一級菜單
menu1.add_radiobutton(label="Python", variable=var, command=on_menu_click)
menu1.add_radiobutton(label="Java", variable=var, command=on_menu_click)
menu1.add_radiobutton(label="C++", variable=var, command=on_menu_click)
menubar.add_cascade(label="編程語言", menu=menu1) # 添加一級菜單
root.config(menu=menubar) # 將菜單欄添加到窗體中
label = tk.Label(root, text="請選擇一種編程語言")
label.pack()
root.mainloop()
三、Tkinter中的布局管理器
1、Pack布局管理器
import tkinter as tk
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
label1 = tk.Label(root, text="標籤1", bg="red")
label1.pack(side=tk.LEFT)
label2 = tk.Label(root, text="標籤2", bg="green")
label2.pack(side=tk.LEFT)
label3 = tk.Label(root, text="標籤3", bg="blue")
label3.pack(side=tk.LEFT)
root.mainloop()
2、Grid布局管理器
import tkinter as tk
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
label1 = tk.Label(root, text="標籤1", bg="red")
label1.grid(row=0, column=0)
label2 = tk.Label(root, text="標籤2", bg="green")
label2.grid(row=0, column=1)
label3 = tk.Label(root, text="標籤3", bg="blue")
label3.grid(row=1, columnspan=2)
root.mainloop()
3、Place布局管理器
import tkinter as tk
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
label = tk.Label(root, text="標籤", bg="red")
label.place(x=50, y=50)
root.mainloop()
四、Tkinter中的事件處理
1、按鈕點擊事件
import tkinter as tk
def on_button_click():
label.config(text="按鈕被點擊了!")
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
button = tk.Button(root, text="點擊我", command=on_button_click)
button.pack()
label = tk.Label(root, text="請點擊按鈕")
label.pack()
root.mainloop()
2、鍵盤事件
import tkinter as tk
def on_key(event):
print("按下了" + event.char)
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
entry = tk.Entry(root)
entry.bind("", on_key) # 綁定鍵盤事件
entry.pack()
root.mainloop()
3、鼠標事件
import tkinter as tk
def on_mouse_click(event):
label.config(text="鼠標點擊了坐標為{}的位置".format(event.x, event.y))
def on_mouse_move(event):
label.config(text="鼠標移動到坐標為{}的位置".format(event.x, event.y))
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
label = tk.Label(root, text="請點擊鼠標")
label.pack()
root.bind("", on_mouse_click) # 綁定鼠標點擊事件
root.bind("", on_mouse_move) # 綁定鼠標移動事件
root.mainloop()
五、Tkinter中的畫布(Canvas)
1、繪製直線
import tkinter as tk
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
canvas = tk.Canvas(root, width=300, height=200)
canvas.pack()
canvas.create_line(0, 0, 300, 200, fill="red")
root.mainloop()
2、繪製矩形
import tkinter as tk
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
canvas = tk.Canvas(root, width=300, height=200)
canvas.pack()
canvas.create_rectangle(50, 50, 250, 150, fill="green")
root.mainloop()
3、繪製圓形
import tkinter as tk
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
canvas = tk.Canvas(root, width=300, height=200)
canvas.pack()
canvas.create_oval(50, 50, 250, 150, fill="blue")
root.mainloop()
六、Tkinter中的圖片處理
1、顯示圖片
import tkinter as tk
from PIL import Image, ImageTk
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
image = Image.open("test.png")
photo = ImageTk.PhotoImage(image)
label = tk.Label(root, image=photo)
label.pack()
root.mainloop()
2、添加按鈕以改變圖片
import tkinter as tk
from PIL import Image, ImageTk
root = tk.Tk()
root.title("我的GUI窗體")
root.geometry("600x400")
image1 = Image.open("test1.png")
photo1 = ImageTk.PhotoImage(image1)
image2 = Image.open("test2.png")
photo2 = ImageTk.PhotoImage(image2)
label = tk.Label(root, image=photo1)
label.pack()
def on_button_click():
label.config(image=photo2)
button = tk.Button(root, text="改變圖片", command=on_button_click)
button.pack()
root.mainloop()
七、Tkinter應用實例
一個簡單的計算器程序
import tkinter as tk
root = tk.Tk()
root.title("計算器")
root.geometry("300x200")
var1 = tk.StringVar()
entry1 = tk.Entry(root, textvariable=var1, font=("Arial", 14))
entry1.pack()
var2 = tk.StringVar()
entry2 = tk.Entry(root, textvariable=var2, font=("Arial", 14))
entry2.pack()
var3 = tk.StringVar()
label = tk.Label(root, textvariable=var3, font=("Arial", 14))
label.pack()
def on_button_click():
num1 = float(var1.get())
num2 = float(var2.get())
result = num1 + num2
var3.set("結果為:" + str(result))
button = tk.Button(root, text="相加", command=on_button_click, font=("Arial", 14))
button.pack()
root.mainloop()
八、總結
Tkinter是Python中最常用的GUI工具包之一,它提供了豐富的控件和布局管理器,幫助開發人員快速實現圖形化界面。同時,Tkinter還提供了很多事件處理和畫布等功能,可以滿足各種應用場景的需求。本文介紹了Tkinter的基礎知識、常用控件和布局管理器、事件處理、畫布以及圖片處理等方面的內容,並給出了簡單的應用實例。開發者可以根據需求,了解更多的Tkinter接口,並深入探究其應用。
原創文章,作者:JYAJ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/144447.html
微信掃一掃
支付寶掃一掃