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