Python学习17(GUI图形用户界面编程)
Python
目录
一、GUI图形用户界面编程
我们前面实现的都是基于控制台的程序,程序和用户的交互通过控制台来完成。本章,我们将学习GUI(图形用户界面编程),我们可以通过python提供的丰富的组件,快速的实现使用图形界面和用户交互。
GUI编程类似于“搭积木”,将一个个组件放到窗口中。各种按钮、菜单、编辑区域等都是一个个组件,它们都放置到窗口中,并通过增加“对事件的处理”成为一个完整的程序。
二、常用的GUI库
1.Tkinter
tkinter (Tk interface)是 Python的标准GUI库,支持跨平台的GUI程序开发。tkinter适合小型的GUI程序编写也特别适合初学者学习GUI编程。
2. wxPython
wxPython是比较流行的GUI库,适合大型应用程序开发,功能强于tkinter ,整体设计框架类似于MFC(Microsoft Foundation Classes微软基础类库)。
3. PyQT
Qt是一种开源的GUI库,适合大型GUI程序开发, PyQT是Qt王具包标准的Python实现。我们也可以使用Qt Desginer界面设计器快速开发GUI应用程序。
三、tkinter模块
本章中涉及大量的API讲解。学习API最好的来源就是官方提供的文档Tk图形用户界面(GUI) — Python 3.10.2 文档https://docs.python.org/zh-cn/3.10/library/tk.html
四、GUI编程的核心步骤
①创建应用程序主窗口对象(也称:根窗口)
(1)通过类Tk的无参构造函数
from tkinter import *
root=Tk()
(2)在主窗口中,添加各种可视化组件,比如:按钮 (Button)、文本框(Label)等。
btn01=Button(root)
btn01["text"]="点我"
(3)通过几何布局管理器,管理组件的大小和位置
btn01.pack()
(4)事件处理,通过绑定事件处理程序,响应用户操作所触发的事件(比如:单击、双击等)
def aini(e):
messagebox.showinfo("Message","我爱你")
print("I love you") #控制台打印
btn01.bind("<Button-1>",aini) #事件绑定
总代码
from tkinter import * from tkinter import messagebox root=Tk() btn01=Button(root) btn01["text"]="点我" btn01.pack() def aini(e): messagebox.showinfo("Message","我爱你") print("I love you") #控制台打印 btn01.bind("<Button-1>",aini) #事件绑定 root.mainloop() #调用组件的mainloop()方法,进入事件循环
②tkinter主窗口
主窗口位置和大小
通过geometry('wxh ±x±y')进行设置。w为宽度, h为高度。+x表示距屏幕左边的距离;-x表示距屏幕右边的距离;+y表示距屏幕上边的距离;-y表示距屏幕下边的距离。
from tkinter import *
root = Tk()
root.geometry("500x300+100+200") #500x(注意是x)300表示窗口大小,+100+200表示距屏幕的距离
③常用组件
Tkinter类 | 名称 | 简介 |
---|---|---|
Toplevel | 顶层 | 容器类,可用于为其他组件提供单独的容器;Toplevel有点类似于窗口 |
Button | 按钮 | 代表按钮组件 |
Canvas | 画布 | 提供绘图功能,包括直线、矩形、椭圆、多边形、位图等 |
Checkbutton | 复选框 | 可供用户勾选的复选框 |
Entry | 单行输入框 | 用户可输入内容 |
Frame | 容器 | 用于装载其他GUI组件 |
Label | 标签 | 用于显示不可编辑的文本或图标 |
LabelFrame | 容器 | 容器组件,类似于Frame,支持添加标题 |
Listbox | 列表框 | 列出多个选项,供用户选择 |
Menu | 菜单 | 菜单组件 |
Menubutton | 菜单按钮 | 用来包含菜单的按钮(包括下拉式、层叠式等) |
OptionMenu | 菜单按钮 | Menubutton的子类,也代表菜单按钮,可通过按钮打开一个菜单 |
Message | 消息框 | 类似于标签,但可以显示多行文本;后来当Label也能显示多行文本后,该组件基本处于废弃状态 |
PenedWindow | 分区窗口 | 该容器会被划分成多个区域,每添加一个组件占一个区域,用户可通过拖动分割线来改变各区域的大小 |
Radiobutton | 单选钮 | 可供用户点击的单选钮 |
Scale | 滑动条 | 拖动滑块可设定起始值和结束值,可显示当前位置的精确值 |
Spinbox | 微调选择器 | 用户可通过该组件的向上、向下箭头选择不同的值 |
Scrollbar | 滑动条 | 用于组件(文本域、画布、列表框、文本框)提供滑动功能 |
Text | 多行文本框 | 显示多行文本 |
五、GUI应用程序类的经典写法
156
更多推荐
所有评论(0)