参考:https://zetcode.com/gui/pyqt5/
基础知识
pip install PyQt5
PyQt5是Qt5的python binding,跨平台,开发者可以选择GPL或者商业许可证。
PyQt5模块
QtCore:核心的、非GUI功能,比如时间、文件、数据类型、流、URL、线程和进程等。
QtGui:窗口、事件处理、2d绘图、图像、字体、文字等。
QtWidgets:提供UI元素
QtMultimedia:处理多媒体内容、提供摄像头和收音机的api
QtBluetooth:扫描、连接设备
QtNetwork:网络编程
QtPositioning:使用卫星、wifi、文件确定位置
Enginio:接入Qt Cloud Services Managed Application Runtime
QtWebSockets:实现了WebSocket protocol
QtWebEngine:QML Web Engine objects
QtWebEngineCore:core Web Engine classess
QtWebEngineWidgets:提供了基于chrome的web浏览器
QtXml:处理xml文件,提供SAX和DOM API的实现
QtSvg:展示svg文件
QtSql:数据库
QtTest:测试
版本
QT的版本
>>> from PyQt5.QtCore import QT_VERSION_STR
>>> print(QT_VERSION_STR)
5.15.2
pyqt的版本
>>> from PyQt5.Qt import PYQT_VERSION_STR
>>> print(PYQT_VERSION_STR)
5.15.4
时间和日期
QDate,QDateTime和QTime是主要模块。
def test_time_process():
from PyQt5.QtCore import QDate, QTime, QDateTime, Qt
# QDate
now = QDate.currentDate()
d = QDate(1945, 5, 7) # 构造函数
print(now.toString(Qt.ISODate)) # 2021-06-01
print(now.toString(Qt.DefaultLocaleLongDate)) # 2021年6月1日
print(now.daysInMonth()) # 这个月有多少天?数字
print(now.daysInYear()) # 这年有多少天?数字
xmas1 = QDate(2021, 12, 24) # 日期差值
now.daysTo(xmas1) # 206
xmas1.daysTo(now) # -206,因此向后为正,向前为负
datetime = QDateTime.currentDateTime()
print(datetime.toString()) # 周二 6月 1 11:37:52 2021
# UTC是universal coordinated time,是全球统一的那个时间
print('Universal datetime: ', datetime.toUTC().toString(Qt.ISODate))
# Universal datetime: 2021-06-01T03:37:52Z
print(f'The offset from UTC is: {datetime.offsetFromUtc()} seconds')
# The offset from UTC is: 28800 seconds
# 以下测试是单独的,忽略数值差异
print(datetime.toString(Qt.ISODate)) # 2021-06-01T13:30:37
print(datetime.addDays(12).toString(Qt.ISODate)) # 2021-06-13T13:30:37
print(datetime.addDays(-12).toString(Qt.ISODate)) # 2021-05-20T13:30:37
print(datetime.addSecs(-12).toString(Qt.ISODate)) # 2021-06-01T13:30:25
print(datetime.addMonths(-1).toString(Qt.ISODate)) # 2021-05-01T13:30:37
print(datetime.addYears(1).toString(Qt.ISODate)) # 2022-06-01T13:30:37
unix_time = datetime.toSecsSinceEpoch() # 1622525437
d = QDateTime.fromSecsSinceEpoch(unix_time) #
print(d.toString(Qt.ISODate)) # 2021-06-01T13:30:37
time = QTime.currentTime()
print(time.toString(Qt.DefaultLocaleLongDate)) # 11:37:52
print(time.toString(Qt.DefaultLocaleShortDate)) # 11:37
第一个窗口
import sys
from PyQt5.QtWidgets import QApplication, QWidget
if __name__ == '__main__':
app = QApplication(sys.argv) # 用命令行参数创建app对象
w = QWidget() # 没有parent的widget就是window
w.resize(250, 150) # (wide, high)
w.move(300, 300) # 移动到x=300,y=300处
w.setWindowTitle('Simple')
w.show() # 在此之前是在内存中的
sys.exit(app.exec_()) # exec是python关键词