您的位置:

Python GUI开发工具:Tkinter,快速设计菜单、选框、按钮、文本框等界面元素

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接口,并深入探究其应用。