GUI编程中的tkinter入门教程以及经典写法

简介: GUI编程中的tkinter入门教程以及经典写法

常用的GUI库

  1. Tkinter


tkinter(Tk interface)是Python的标准GUI库,支持跨平台的GUI程序开发。tkinter适合小型的GUI程序编写,也特别适合初学者学习GUI编程。


  1. wxPython


wxPython是比较流行的GUI库,适合大型应用程序开发,功能强于tkinter,整体设计框架类似于MFC(Microsoft Foundation Classes微软基础类库)


  1. PyQT


Qt是一种开源的GUI库,适合大型GUI程序开发,PyQT是Qt工具包标准的Python实现。我们也可以使用Qt Desginer界面设计器快速开发GUI应用程序


GUI编程的核心步骤和第一个GUI程序

基于tkinter模块创建GUI程序包含如下4个核心步骤:


  1. 创建应用程序主窗口对象(也称:根窗口)通过类Tk的无参构造函数


  1. 在主窗口中,添加各种可视化组件,比如:按钮(Button)、文本框(Label)等


  1. 通过几何布局管理器,管理组件的大小和位置


  1. 事件处理,通过绑定事件处理程序,响应用户操作所触发的事件(比如:单击、双击等)


【示例】使用tkinter模块,创建GUI应用程序,并实现点击按钮的事件处理 :

from tkinter import *
from tkinter import messagebox  
root = Tk()
btn01 = Button(root)
btn01["text"] = "点我就送花"
btn01.pack()
def  songhua(e):
    messagebox.showinfo("Message","送你一朵玫瑰花,请你爱上我")
    print("送你99朵玫瑰花")
btn01.bind("",songhua) #为按钮绑定事件
root.mainloop()        #调用组件的mainloop方法,进入事件循环

GUI应用程序类的经典写法

GUI应用程序编写的一个主要结构,采用了面向对象的方式,更加合理的组织代码。


通过类Application组织整个GUI程序,类Application继承了Frame及通过继承拥有了父类的特性。通过构造函数__init__()初始化窗口中的对象,通过createWidgets()方法创建窗口中的对象。


Frame框架是一个tkinter组件,表示一个矩形的区域。Frame一般作为容器使用,可以放置其他组件,从而实现复杂的布局。


【示例】标准的GUI程序类的写法

from tkinter import *
from tkinter import messagebox
class Application(Frame):
    """一个经典的GUI程序的类的写法"""
    def __init__(self, master=None):
        super().__init__(master)    # super()代表的是父类的定义,而不是父类对象
        self.master = master
        self.pack()
        self.createWidget()
    def createWidget(self):
        """在此区域进行创建组件"""
if __name__ == '__main__':
    root = Tk()
    root.geometry("400x100+200+300")
    root.title("一个经典的GUI程序类写法")
    app = Application(master=root)
    root.mainloop()


面向对象的GUI写法是后面经常要使用到的,这种写法建议必须掌握

常用组件汇总列表

Tkinter类 名称 简介
Toplevel 顶层 容器类,可用于为其他组件提供单独的容器;Toplevel 有点类似于窗口
Button 按钮 代表按钮组件
Canvas 画布 提供绘图功能,包括直线、矩形、椭圆、多边形、位图等
Checkbutton 复选框 可供用户勾选的复选框
Entry 单行输入框 用户可输入内容
Frame 容器 用于装载其它 GUI 组件
Label 标签 用于显示不可编辑的文本或图标
LabelFrame 容器 也是容器组件,类似于Frame,但它支持添加标题
Listbox 列表框 列出多个选项,供用户选择
Menu 菜单 菜单组件
Menubutton 菜单按钮 用来包含菜单的按钮(包括下拉式、层叠式等)
OptionMenu 菜单按钮 Menubutton 的子类,也代表菜单按钮,可通过按钮打开一个菜单
Message 消息框 类似于标签,但可以显示多行文本;后来当 Label 也能显示多行文本之后,该组件基本处于废弃状态
PanedWindow 分区窗口 该容器会被划分成多个区域,每添加一个组件占一个区域,用户可通过拖动分隔线来改变各区域的大小
Radiobutton 单选钮 可供用户点边的单选钮
Scale 滑动条 拖动滑块可设定起始值和结束值,可显示当前位置的精确值
Spinbox 微调选择器 用户可通过该组件的向上、向下箭头选择不同的值
Scrollbar 滚动条 用于为组件(文本域、画布、列表框、文本框)提供滚动功能
Text 多行文本框 显示多行文本
目录
相关文章
|
开发者 Python
Python Qt GUI设计:信号与槽的使用方法(基础篇—7)
Python Qt GUI设计:信号与槽的使用方法(基础篇—7)
Python Qt GUI设计:信号与槽的使用方法(基础篇—7)
|
8天前
|
Python
turtle库的几个案例进阶,代码可直接运行(python经典编程案例)
该文章展示了使用Python的turtle库进行绘图的进阶案例,包括绘制彩色圆形和复杂图案的代码示例。
44 6
turtle库的几个案例进阶,代码可直接运行(python经典编程案例)
|
5月前
|
开发框架 程序员 开发者
Python GUI编程:从入门到精通3.2 GUI编程:学习使用Tkinter、PyQt或wxPython等库创建图形用户界面。
Python GUI编程:从入门到精通3.2 GUI编程:学习使用Tkinter、PyQt或wxPython等库创建图形用户界面。
|
12月前
|
前端开发 数据可视化 搜索推荐
【100天精通python】Day37:GUI界面编程_PyQt 从入门到实战(上)_PyQt6基本组件、事件和信号槽、界面设计
【100天精通python】Day37:GUI界面编程_PyQt 从入门到实战(上)_PyQt6基本组件、事件和信号槽、界面设计
414 0
|
12月前
|
SQL 安全 关系型数据库
【100天精通python】Day38:GUI界面编程_PyQt 从入门到实战(中)_数据库操作与多线程编程
【100天精通python】Day38:GUI界面编程_PyQt 从入门到实战(中)_数据库操作与多线程编程
124 0
|
12月前
|
编解码 数据可视化 前端开发
【100天精通python】Day35:GUI界面编程_一文掌握Tkinter基本操作
【100天精通python】Day35:GUI界面编程_一文掌握Tkinter基本操作
193 0
【100天精通python】Day35:GUI界面编程_一文掌握Tkinter基本操作
|
小程序 程序员 Python
Python|GUI编程Button组件介绍
Python|GUI编程Button组件介绍
290 1
|
前端开发 测试技术 人机交互
软件测试|超好用超简单的Python GUI库——tkinter(十四)
软件测试|超好用超简单的Python GUI库——tkinter(十四)
130 1
|
自然语言处理 Python 容器
Python|GUI编程中组件的布局
Python|GUI编程中组件的布局
303 0
|
测试技术 Python 内存技术
软件测试|超好用超简单的Python GUI库——tkinter(十二)
软件测试|超好用超简单的Python GUI库——tkinter(十二)
101 0
下一篇
无影云桌面