目录

一、GUI图形用户界面编程

二、常用的GUI库

三、tkinter模块

四、GUI编程的核心步骤

①创建应用程序主窗口对象(也称:根窗口)

②tkinter主窗口

③常用组件


一、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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐