简介

PySide2和PyQt5都是著名的Qt库。
Qt库里面有非常强大的图形界面开发库,但是Qt库是C++语言开发的,PySide2和PyQt5可以让我们通过Python语言使用Qt。

PySide2是Qt的亲儿子。
PyQt5是Qt还没有亲儿子之前收的义子。

PySide2简介

PySide2是一个Python模块,它提供了对Qt5.12+完整框架的访问,简单点儿说就是在Python中使用的Qt。使用PySide2既能开发出完美的界面,又能享受Python的便捷开发。与PySide和PyQt相比,PySide2是开源的,使用不受限制;与Qt的C++相比,使用PySide2能大大减少代码量。PySide2的这些优点,很适合团队规模不大,项目需要快速推进,需开发精美界面的场合。

PyQt5简介

 pyqt5是一套Python绑定Digia QT5应用的框架。它可用于Python 2和3。本教程使用Python 3。Qt库是最强大的GUI库之一。pyqt5的官方网站http://www.riverbankcomputing.co.uk/news。
  pyqt5做为Python的一个模块,它有620多个类和6000个函数和方法。这是一个跨平台的工具包,它可以运行在所有主要的操作系统,包括UNIX,Windows,Mac OS。pyqt5是双重许可。开发者可以在GPL和商业许可之间进行选择。
  pyqt5的类别分为几个模块,包括以下:

  • QtCore:包含了核心的非GUI功能。此模块用于处理时间、文件和目录、各种数据类型、流、URL、MIME类型、线程或进程。
  • QtGui:包含类窗口系统集成、事件处理、二维图形、基本成像、字体和文本。
  • QtWidgets:包含创造经典桌面风格的用户界面提供了一套UI元素的类。
  • QtMultimedia:包含的类来处理多媒体内容和API来访问相机和收音机的功能。
  • QtBluetooth:包含类的扫描设备和连接并与他们互动。描述模块包含了网络编程的类。这些类便于TCP和IP和UDP客户端和服务器的编码,使网络编程更容易和更便携。
  • QtNetwork
  • QtPositioning:包含类的利用各种可能的来源,确定位置,包括卫星、Wi-Fi、或一个文本文件。
  • Enginio:模块实现了客户端库访问Qt云服务托管的应用程序运行时。
  • QtWebSockets:包含实现WebSocket协议类。
  • QtWebKit:包含一个基于Webkit2图书馆Web浏览器实现类。
  • QtWebKitWidgets:包含的类的基础webkit1一用于qtwidgets应用Web浏览器的实现。
  • QtXml:包含与XML文件的类。这个模块为SAX和DOM API提供了实现。
  • QtSvg:提供了显示SVG文件内容的类。可伸缩矢量图形(SVG)是一种描述二维图形和图形应用的语言。
  • QtSql:提供操作数据库的类。
  • QtTest:包含测试的功能,使pyqt5应用程序的单元测试

安装 PySide2

键入命令

pip install pyside2

这个库比较大,大概有100M左右,大家耐心等待。

建议:如果你的程序要发布给客户使用,建议使用32位的解释器,这样最终发布的程序可以兼容32为的Windows

简单使用

from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QPlainTextEdit

app = QApplication([])

window = QMainWindow()
window.resize(500, 400)
window.move(300, 310)
window.setWindowTitle("薪资统计")

textEdit = QPlainTextEdit(window)
textEdit.resize(300, 350)
textEdit.move(10, 25)
textEdit.setPlaceholderText("请输入薪资表")

button = QPushButton("统计", window)
button.move(330, 25)

window.show()
app.exec_()
  • QApplication 提供了整个图形界面程序的底层管理功能,比如:初始化、程序入口参数的处理、用户事件(对界面的点击、输入、拖拽)分发给各个对应的控件。QApplication的初始化十分重要。所以我们必须在任何控件对象创建前先创建它

用户操作处理

signal

# 定义点击事件
button.clicked.connect(handleCalc)

Qt对于上行代码的解释:把button 被点击(clicked) 的 信号(signal) 连接(connect) 到了handleCalc这样的一个slot上。