文章目录
- 1. python图形界面开发
- 1.1. Python图形界面开发——Tkinter
- 1.2. Python图形界面开发——PyQt
- 1.3. Python图形界面开发——wxPython
- 1.4. Python图形界面开发—— PyGTK:基于GTK
- 1.5. Python图形界面开发—— Kivy
- 1.6. Python图形界面开发——可视化工具
- 1.7. Python图形界面开发——GUI设计原则
- 2. Tkinter 开发
- 3. Radiobutton:单选按钮
- 3.1. 格式说明
- 3.2. 定义整数类型的值
- 3.3. 定义字符串类型的值
- 3.4. 获取值
- 3.5. 点击事件
- 3.5. 示例
1. python图形界面开发
Python作为一种高级编程语言,具有简单易学、开发效率高等优点,近年来备受关注。Python的图形界面开发也是其应用领域之一。本文将从多个角度分析Python图形界面开发。
-
一、Python图形界面开发——Tkinter
-
二、Python图形界面开发——PyQt
-
三、Python图形界面开发——wxPython
-
四、Python图形界面开发—— PyGTK
-
五、Python图形界面开发—— Kivy
-
六、Python图形界面开发——可视化工具
1.1. Python图形界面开发——Tkinter
Python自带的GUI开发工具包,可以创建简单的GUI应用程序。
Tkinter是Python自带的GUI开发库,它是一个跨平台的开发库,可在多个操作系统上使用。Tkinter提供了丰富的GUI控件,如按钮、标签、文本框等,可以方便地创建各种GUI应用。此外,Tkinter的文档和教程也非常全面,易于入门。
Tkinter是Python自带的GUI工具包,它是一个跨平台的工具包,可以在Windows、Linux和MacOS等操作系统上运行。Tkinter是基于Tk GUI工具包的Python接口,TkGUI工具包是一个用于创建GUI应用程序的工具包,最初是为Tcl语言设计的,后来被移植到了其他语言中,包括Python。
1.2. Python图形界面开发——PyQt
一个基于Qt库的Python GUI开发工具包,提供了丰富的GUI组件和功能。
PyQt是一个用于开发Python GUI应用的工具包,它是基于Qt库开发的。PyQt提供了与Qt相同的GUI控件,并且还提供了一些独特的控件,如日期选择器、颜色选择器等。PyQt的文档也很全面,但是由于它不是Python自带的库,所以需要先安装。
1.3. Python图形界面开发——wxPython
基于wxWidgets库的Python GUI开发工具包,可以创建跨平台的GUI应用程序。
wxPython也是一个用于开发Python GUI应用的工具包,它是基于wxWidgets库开发的。wxPython提供了与wxWidgets相同的GUI控件,可在多个操作系统上使用。wxPython的文档和教程也很全面,但与PyQt相比,它的学习曲线稍微陡峭一些。
1.4. Python图形界面开发—— PyGTK:基于GTK
PyGTK:基于GTK+库的Python GUI开发工具包,可以创建跨平台的GUI应用程序。
1.5. Python图形界面开发—— Kivy
Kivy:一个跨平台的Python GUI开发框架,专注于创建移动应用程序和多点触控应用程序。
1.6. Python图形界面开发——可视化工具
除了以上三种GUI开发库外,还有一些Python可视化工具,如Matplotlib、Seaborn、Plotly等,它们可以用于数据可视化、绘制图表等。这些工具不仅能够提供强大的图形绘制功能,而且还可以与GUI库相结合,实现更加丰富多彩的GUI应用。
1.7. Python图形界面开发——GUI设计原则
在进行Python图形界面开发时,需要遵循一些GUI设计原则,如界面简洁、易用性高、反应速度快等。此外,还需要注意界面的美观度,选择合适的颜色、字体、图片等,以提高用户体验。
2. Tkinter 开发
使用Tkinter,可以快速地创建GUI应用程序,Tkinter提供了一系列的GUI组件,如按钮、标签、文本框、滚动条、列表框等,可以通过这些组件来构建GUI界面。Tkinter还提供了一些布局管理器,可以更方便地管理和布局GUI组件。
常用控件包括:
-
Button 按钮
-
Label 提示信息,用于显示文本和图像。
-
Message:类似于Label,但可以自动换行
-
Entry 文本框,用于输入单行文本。
-
Text文字区域,用于输入多行文本。
-
OptionMenu 菜单
-
ComboBox 下拉框
-
Menu 右键菜单
-
Checkbutton 用于创建复选框,用于选择一个或多个选项。
-
Radiobutton:用于创建单选按钮, 用于选择一项。
-
Scale:用于创建滑动条, 用于选择一个范围内的值。
-
Listbox:用于创建列表框
-
布局管理
3. Radiobutton:单选按钮
3.1. 格式说明
radiobutton1 = Radiobutton(root, text="Option 1", variable=var, value=1)
-
var 为变量的名字,用于定义接收 Radiobutton 选中后的取值 ;
-
variable=var 用于设置 选中后的值,赋值给哪个具体的变量
-
value= 表示选中当前 选项后,设置给 var 变量的具体值(var 为变量的名字);
3.2. 定义整数类型的值
from tkinter import *
root = Tk()var = IntVar()
radiobutton1 = Radiobutton(root, text="Option 1", variable=var, value=1)
radiobutton2 = Radiobutton(root, text="Option 2", variable=var, value=2)
radiobutton1.pack()
radiobutton2.pack()
root.mainloop()
3.3. 定义字符串类型的值
import tkinter as tkvar = tk.StringVar()
var.set('W')radiobutton1 = tk.Radiobutton(self, text='男', value='M', variable=var)
radiobutton2 = tk.Radiobutton(self, text='女', value='W', variable=var)
3.4. 获取值
var.get()
3.5. 点击事件
tk.Radiobutton(..., command=on_radiobutton_selected)
示例:
import tkinter as tkdef on_radiobutton_selected():if sex_type == "M":print("Radiobutton M被选中")elif sex_type == "W":print("Radiobutton M被选中")else:print("Radiobutton 未知被选中")var = tk.StringVar()
var.set('W')radiobutton1 = tk.Radiobutton(self, text='男', value='M', variable=sex_type command=on_radiobutton_selected)
radiobutton2 = tk.Radiobutton(self, text='女', value='W', variable=sex_type command=on_radiobutton_selected)
3.5. 示例
import tkinter as tk
from tkinter import *
import webbrowser
from tkinter import messageboxclass Application(Frame):"""一个经典的GUI程序的写法"""def __init__(self, master=None):super().__init__(master) # super代表的是父类的定义,而不是父类对象self.master = masterself.pack()self.createWidget()def createWidget(self):"""创建组件"""self.v = tk.StringVar()self.v.set('W')self.r1 = tk.Radiobutton(self, text='男', value='M', variable=self.v)self.r2 = tk.Radiobutton(self, text='女', value='W', variable=self.v)self.r1.pack(side='left')self.r2.pack(side='left')Button(self, text='确定', command=self.confim).pack(side='left')def confim(self):messagebox.showinfo('测试', '你选择的性别是:' + self.v.get())if __name__ == "__main__":root = Tk()root.geometry('400x60+200+200')app = Application(master=root)root.mainloop()