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进行数据科学工作的简单入门教程
Apr 01 Python
对于Python装饰器使用的一些建议
Jun 03 Python
在python中使用正则表达式查找可嵌套字符串组
Oct 24 Python
PyQt5创建一个新窗口的实例
Jun 20 Python
pycharm修改file type方式
Nov 19 Python
Python Selenium参数配置方法解析
Jan 19 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
Apr 11 Python
PyQt5实现简单的计算器
May 30 Python
python如何求圆的面积
Jul 01 Python
虚拟机下载python是否需要联网
Jul 27 Python
Python 必须了解的5种高级特征
Sep 10 Python
Django中template for如何使用方法
Jan 31 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的栏目导航程序
2006/10/09 PHP
php 文章调用类代码
2011/08/11 PHP
Zend studio文件注释模板设置方法
2013/09/29 PHP
php ci框架中加载css和js文件失败的原因及解决方法
2014/07/29 PHP
PHP常用正则表达式集锦
2014/08/17 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
开启PHP的伪静态模式
2015/12/31 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
字符串的replace方法应用浅析
2011/12/06 Javascript
js实现页面转发功能示例代码
2013/08/05 Javascript
js 阻止子元素响应父元素的onmouseout事件具体实现
2013/12/23 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
jQuery图片渐变特效的简单实现
2016/06/25 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
了解JavaScript中的选择器
2019/05/24 Javascript
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
深入了解Django中间件及其方法
2019/07/26 Python
pandas的排序和排名的具体使用
2019/07/31 Python
python Kmeans算法原理深入解析
2019/08/23 Python
对pytorch的函数中的group参数的作用介绍
2020/02/18 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
如何用python免费看美剧
2020/08/11 Python
Python 如何查找特定类型文件
2020/08/17 Python
纯css3实现图片翻牌特效
2015/03/10 HTML / CSS
大学生学期自我鉴定
2014/03/19 职场文书
学校安全责任书
2014/04/14 职场文书
七一建党节演讲稿
2014/09/11 职场文书
离婚协议书范文2014
2014/10/16 职场文书
优秀大学生自荐信
2015/03/26 职场文书
2015年纪念“卢沟桥事变”78周年活动方案
2015/05/06 职场文书
初中班主任教育随笔
2015/08/15 职场文书
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android