Python四款GUI图形界面库介绍


Posted in Python onJune 05, 2022

一、Python官方标准库:Tkinter (必须了解)

Python内置图形界面库——Tkinter。

Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。

用法:

Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为控件或者部件。

目前有15种Tkinter的部件。我们提出这些部件以及一个简短的介绍。

  • Button 按钮控件;在程序中显示按钮。
  • Frame 框架控件;在屏幕上显示一个矩形区域,多用来作为容器
  • Label 标签控件;可以显示文本和位图
  • Menubutton 菜单按钮控件,由于显示菜单项。
  • Menu 菜单控件;显示菜单栏,下拉菜单和弹出菜单
  • Message 消息控件;用来显示多行文本,与label比较类似
  • Scrollbar 滚动条控件,当内容超过可视化区域时使用,如列表框。.
  • Text 文本控件;用于显示多行文本
  • tkMessageBox 用于显示你应用程序的消息框。
  • Canvas 画布控件;显示图形元素如线条或文本
  • Checkbutton 多选框控件;用于在程序中提供多项选择框
  • Entry 输入控件;用于显示简单的文本内容
  • Listbox 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
  • Radiobutton 单选按钮控件;显示一个单选的按钮状态
  • Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间
  • Toplevel 容器控件;用来提供一个单独的对话框,和Frame比较类似
  • Spinbox 输入控件;与Entry类似,但是可以指定输入范围值
  • PanedWindow PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。
  • LabelFrame labelframe 是一个简单的容器控件。常用与复杂的窗口布局。

标准属性

标准属性也就是所有控件的共同属性,如大小,字体和颜色等等。

  • Dimension:控件大小;
  • Color:控件颜色;
  • Font:控件字体;
  • Anchor:锚点;
  • Relief:控件样式;
  • Bitmap:位图;
  • Cursor:光标;

几何管理

Tkinter控件有特定的几何状态管理方法,管理整个控件区域组织,一下是Tkinter公开的几何管理类:包、网格、位置

  • pack():包装;
  • grid():网格;
  • place():位置;

由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 还是能应付自如。

注意:Python3.x 版本使用的库名为 tkinter,即首写字母 T 为小写。

import tkinter

创建一个GUI程序

  • 1、导入 Tkinter 模块
  • 2、创建控件
  • 3、指定这个控件的 master, 即这个控件属于哪一个
  • 4、告诉 GM(geometry manager) 有一个控件产生了。

实例

from tkinter import *  # 导入 Tkinter 库

root = Tk()  # 创建窗口对象的背景色
# 创建两个列表
li = ['C', 'python', 'php', 'html', 'SQL', 'java']
movie = ['CSS', 'jQuery', 'Bootstrap']
listb = Listbox(root)  # 创建两个列表组件
listb2 = Listbox(root)
for item in li:  # 第一个小部件插入数据
    listb.insert(0, item)

for item in movie:  # 第二个小部件插入数据
    listb2.insert(0, item)

listb.pack()  # 将小部件放置到主窗口中
listb2.pack()
root.mainloop()  # 进入消息循环

以上代码执行结果如下图:

Python四款GUI图形界面库介绍

二、三方库:PyQt5(推荐,但是还是累)

pyqt5是一套Python绑定Digia QT5应用的框架。它可用于Python 2和3。Qt库是最强大的GUI库之一。Qt强大之处在于网上有很多pyqt的资源,而且qt技术已经相当成熟,pyqt是采用基本和qt一致的api,因此之前使用过qt的人,转移到pyqt很容易.

pyqt5做为Python的一个模块,它有620多个类和6000个函数和方法。这是一个跨平台的工具包,它可以运行在所有主要的操作系统,包括UNIX,Windows,Mac OS。pyqt5是双重许可。开发者可以在GPL和商业许可之间进行选择。

常用模块

  • QtCore:包含了核心的非GUI功能。此模块用于处理时间、文件和目录、各种数据类型、流、URL、MIME类型、线程或进程。
  • QtGui:包含类窗口系统集成、事件处理、二维图形、基本成像、字体和文本。
  • Qtwidgets:包含创造经典桌面风格的用户界面提供了一套UI元素的类。
  • QtMultimedia:包含的类来处理多媒体内容和API来访问相机和收音机的功能。
  • Qtwebsockets:包含实现WebSocket协议类。
  • QtWebKit:包含一个基于Webkit2图书馆Web浏览器实现类。
  • Qtwebkitwidgets:包含的类的基础webkit1一用于qtwidgets应用Web浏览器的实现。
  • QtXml:包含与XML文件的类。这个模块为SAX和DOM API提供了实现。
  • QtSql:提供操作数据库的类。

1、安装:

pip install pyqt5

测试

import sys

from PyQt5 import QtWidgets, QtCore

app = QtWidgets.QApplication(sys.argv)
widget = QtWidgets.QWidget()
widget.resize(400, 100)
widget.setWindowTitle("This is a demo for PyQt Widget.")
widget.show()

exit(app.exec_())

运行后弹出如下界面,表示PyQt已经正常工作啦。

Python四款GUI图形界面库介绍

2、QtDesigner

QT给我们带来最方便的好处,就是它有一个QT Desiginer,这个设计器可以方便我们进行页面的布局,可以说在Tkinter里面需要一坨坨的代码完成的页面布局,在QT里面只要拖一拖控件就搞定了。

Qtdesigner是Python设计里面一个非常实用的工具,使得人们编写qt界面可以不仅仅是使用纯代码,而可以在可视化的基础上设置,非常方便。

用户安装PyQt5后,系统会默认安装QtDesigner工具。

QtDesigner的默认默认路径: C:\python\python\Lib\site-packages\PyQt5\designer.exe

安装PyQt5-tools

Python环境需要安装designer。 在终端执行pip命令安装完PyQt5-tools。

pip install PyQt5-tools

3、配置PyCharm

打开Pycharm,然后按照下面路径打开Extrernal Tools:

File->设置->Tools->Extrernal Tools->点击“+”号->弹出对话框,配置如下:

Python四款GUI图形界面库介绍

(1).增加QT设计界面“Qt Designer” —— 这个就是设计Qt界面的工具

  • Program选择PyQt安装目录中 designer.exe 的路径
  • Work directory 使用变量 $ProjectFileDir$ (点击后面的…)

Python四款GUI图形界面库介绍

(2).增加“PyUIC” ——这个主要是用来将 Qt界面 转换成 py代码

  • Program选择PyQt安装目录中 pyuic5.bat 的路径
  • parameters设置为$FileName$ -o $FileNameWithoutExtension$.py
  • Work directory 设置为 $ProjectFileDir$ (点击后面的…)

Python四款GUI图形界面库介绍

工具建立成功后返回ExternalTools界面,如下:

Python四款GUI图形界面库介绍

可以在tools里面看到我们的工具

Python四款GUI图形界面库介绍

4、使用PyQt

1、点击QtDesigner工具,弹出设计器窗口:

Python四款GUI图形界面库介绍

如果打开Qt Designer 时,提示This application failed to start because no qt platform plugin could be:

可以把 C:\Users\bobin.yang\PycharmProjects\untitled\venv\Lib\site-packages\pyqt5_tools\Qt\plugins\platforms 目录的qwindows.dll拷贝到

C:\Users\bobin.yang\PycharmProjects\untitled\venv\Lib\site-packages\pyqt5_tools\Qt\bin\platforms 目录里, 或者直接覆盖原来的文件。

注意:两个文件, 正确的文件大小 1.42M, 错误文件大小38k。

2、制作窗体,另存该界面为Untitled.ui文件到项目文件夹下。

Python四款GUI图形界面库介绍

3、返回PyCharm 项目界面,项目列表下多出了这个.ui文件

Python四款GUI图形界面库介绍

把制作好的ui文件打开后,选择pyuic即可转换为*.py文件

Python四款GUI图形界面库介绍

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.15.0
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(320, 310, 93, 28))
        self.pushButton.setObjectName("pushButton")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 25))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "PushButton"))

4、调用方式

import sys
import untitled
from PyQt5 import QtWidgets

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    widget = QtWidgets.QMainWindow()
    ui = untitled.Ui_MainWindow()
    ui.setupUi(widget)
    widget.show()
    sys.exit(app.exec_())

执行结果

Python四款GUI图形界面库介绍

三、三方库:wxPython

wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能健全的 GUI 用户界面。

wxPython是免费的,源代码是开放的,允许其应用在商业产品上,你可以免费使用它和共享它。同时,它也提供类似QT Designer的设计器wxFormbuilder。可以说他就是个压缩版的QT,但是该有的功能却完全不缺失。

四、三方库:PyGTK

PyGTK 让你用 Python 轻松创建具有图形用户界面的程序.底层的 GTK+提供了各 式的可视元素和功能,如果需要,你能开发在 GNOME 桌面系统运行的功能完整 的软件。PyGTK 真正具有跨平台性,它能不加修改地,稳定运行各种操作系统之 上,如 Linux,Windows,MacOS 等.除了简单易用和快速的原型开发能力外,PyGTK还有一流的处理本地化语言的独特功。

到此这篇关于Python图形界面库的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。


Tags in this post...

Python 相关文章推荐
python中反射用法实例
Mar 27 Python
python使用PIL模块实现给图片打水印的方法
May 22 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
Jan 30 Python
网红编程语言Python将纳入高考你怎么看?
Jun 07 Python
Python函数的参数常见分类与用法实例详解
Mar 30 Python
图文详解python安装Scrapy框架步骤
May 20 Python
Python企业编码生成系统总体系统设计概述
Jul 26 Python
导入tensorflow时报错:cannot import name 'abs'的解决
Oct 10 Python
python中提高pip install速度
Feb 14 Python
如何在mac版pycharm选择python版本
Jul 21 Python
python类共享变量操作
Sep 03 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
Python序列化模块JSON与Pickle
Jun 05 #Python
python 判断字符串当中是否包含字符(str.contain)
Python测试框架pytest高阶用法全面详解
Python使用Web框架Flask开发项目
Jun 01 #Python
numpy array找出符合条件的数并赋值的示例代码
Jun 01 #Python
 python中的元类metaclass详情
May 30 #Python
Python自动化实战之接口请求的实现
You might like
php中的时间显示
2007/01/18 PHP
php设计模式 Proxy (代理模式)
2011/06/26 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
2012/07/16 PHP
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
javascript 日期常用的方法
2009/11/11 Javascript
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
JavaScript限定复选框的选择个数示例代码
2013/08/25 Javascript
javascript函数作用域学习示例(js作用域)
2014/01/13 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
使用jQuery简单实现模拟浏览器搜索功能
2014/12/21 Javascript
Jquery实现鼠标移动放大图片功能实例
2015/03/25 Javascript
老生常谈javascript的类型转换
2016/10/12 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
JS实现“全选”和"全不选"功能代码实例
2020/02/06 Javascript
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
python实现报表自动化详解
2017/11/16 Python
Python实现七彩蟒蛇绘制实例代码
2018/01/16 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
python中while和for的区别总结
2019/06/28 Python
python deque模块简单使用代码实例
2020/03/12 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
移动HTML5前端框架—MUI的使用
2017/12/18 HTML / CSS
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
应届生煤化工求职信
2013/10/21 职场文书
办公室文书岗位职责
2013/12/16 职场文书
大学生村官工作感言
2014/01/10 职场文书
有关九一八事变的演讲稿
2014/09/14 职场文书
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
植树节新闻稿
2015/07/17 职场文书
python 实现体质指数BMI计算
2021/05/26 Python