当前位置: 首页 > news >正文

PyQt6从入门到放弃

PyQt6从入门到放弃

安装PyQt6

pip install PyQt6
# 查看QT和PyQT的版本
from PyQt6.QtCore import QT_VERSION_STR
from PyQt6.QtCore import PYQT_VERSION_STR
print(QT_VERSION_STR)
print(PYQT_VERSION_STR)

PyQt6模块

PyQt6类由一系列模块组成包括QtCore、QtGui、QtWidgets等模块。QtCore模块式非GUI的核心库,用来处理时间、文件、目录、各种类型的数据、流、URLs、mime类型、线程和进程。QtGui有窗口系统集成、事件处理、2D图形、基本图像、字体、文本的类。QtWidgets有创建用户界面的类。QtDBus使用D-Bus处理IPC通讯的类。QtNetwork是网络编程类,QtHelp包含了创建、查看和搜索文档的类。QtXml包含了处理XML文件的类。QtSvg提供了显示SVG的类,QtSql提供了数据库的类,QtTest提供了单元测试的类。

日期和事件

(1)当前日期和时间

from PyQt6.QtCore import QDate, QTime, QDateTime, Qt# currentDate获得当前日期
now = QDate.currentDate()
# 2024-03-19
print(now.toString(Qt.DateFormat.ISODate))
# 19 Mar 2024
print(now.toString(Qt.DateFormat.RFC2822Date))
# currentDateTime获取当前的日期和时间
datetime = QDateTime.currentDateTime()
# Tue Mar 19 23:03:06 2024
print(datetime.toString())
# currentTime获取当前时间
time = QTime.currentTime()
# 23:03:06
print(time.toString(Qt.DateFormat.ISODate))

(2)UTC时间

from PyQt6.QtCore import QDateTime, Qt# 获取本地时间的当前时间
now = QDateTime.currentDateTime()
# 当前时间: 2024-03-23T14:04:45
print('当前时间:', now.toLocalTime().toString(Qt.DateFormat.ISODate))
# 从时间对象中获取标准时间 UTC时间: 2024-03-23T06:04:45Z
print('UTC时间:', now.toUTC().toString(Qt.DateFormat.ISODate))
# 本地时间和标准时间的差异: 28800 seconds
print(f'本地时间和标准时间的差异: {now.offsetFromUtc()} seconds')
# 当前时间: 2024-03-23T14:04:45
print('当前时间:', now.toString(Qt.DateFormat.ISODate))

(3)天数

from PyQt6.QtCore import QDatenow = QDate.currentDate()
d = QDate(2024, 4, 23)
# 2024年4月有30天
print(f'2024年4月有{d.daysInMonth()}天')
# 2024年有366天
print(f'2024年有{d.daysInYear()}天')

(4)天数差

from PyQt6.QtCore import QDate, Qtnow = QDate.currentDate()
y = now.year()
# 今天是2024-03-23
print(f'今天是{now.toString(Qt.DateFormat.ISODate)}')
xmas1 = QDate(y-1, 12, 25)
xmas2 = QDate(y, 12, 25)
dayspassed = xmas1.daysTo(now)
# 从2023-12-25已经过了89天
print(f'从{xmas1.toString(Qt.DateFormat.ISODate)}已经过了{dayspassed}天')
nofdays = now.daysTo(xmas2)
# 距离2024-12-25还剩277天
print(f'距离{xmas2.toString(Qt.DateFormat.ISODate)}还剩{nofdays}天')

(5)时间的计算

from PyQt6.QtCore import QDateTime, Qtnow = QDateTime.currentDateTime()
# 今天是2024-03-23T14:28:07
print(f'今天是{now.toString(Qt.DateFormat.ISODate)}')
# 12天后是2024-04-04T14:28:07
print(f'12天后是{now.addDays(12).toString(Qt.DateFormat.ISODate)}')
# 12天前是2024-03-11T14:28:07
print(f'12天前是{now.addDays(-12).toString(Qt.DateFormat.ISODate)}')
# 50秒后是2024-03-23T14:28:57
print(f'50秒后是{now.addSecs(50).toString(Qt.DateFormat.ISODate)}')
# 3分钟后是2024-06-23T14:28:07
print(f'3分钟后是{now.addMonths(3).toString(Qt.DateFormat.ISODate)}')
# 10年后是2034-03-23T14:28:07
print(f'10年后是{now.addYears(10).toString(Qt.DateFormat.ISODate)}')

PyQt6显示窗口小程序

import sys
from PyQt6.QtWidgets import QApplication, QWidgetdef main():# 每个应用程序都必须创建一个应用程序对象# sys.argv是来自命令行的参数app = QApplication(sys.argv)# QWidget小部件是所有用户界面对象的基类,提供了默认的构造函数w = QWidget()# 改变小部件的尺寸,宽250像素,高150像素w.resize(250, 200)# 小部件移动到屏幕的指定坐标w.move(300, 300)# 设置窗口标题w.setWindowTitle('Simple')# 在屏幕上显示小部件w.show()# 如果调用exit方法或小部件被销毁则主循环结束sys.exit(app.exec())if __name__ == '__main__':main()

气泡提示小程序

import sys
from PyQt6.QtWidgets import (QApplication, QWidget, QToolTip, QPushButton)
from PyQt6.QtGui import QFontclass Bubble(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):QToolTip.setFont(QFont('SansSerif', 10))self.setToolTip('这是一个<b>小部件</b>')btn = QPushButton('QPushButton', self)# 创建气泡提示框btn.setToolTip('这是一个<b>QPushButton</b>小部件')# 给按钮一个系统建议的尺寸btn.resize(btn.sizeHint())btn.move(50, 50)self.setGeometry(300, 300, 300, 200)self.setWindowTitle('提示框')self.show()    def main():    app = QApplication(sys.argv)    w = Bubble()sys.exit(app.exec())    if __name__ == '__main__':main()

退出按钮

import sys
from PyQt6.QtWidgets import (QApplication, QWidget, QToolTip, QPushButton)
from PyQt6.QtGui import QFontclass Bubble(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):# 参数1是按钮的标签,参数2是父级小部件qbtn = QPushButton('Quit', self)# 事件处理系统是信号和插槽机制构成的,点击按钮会发出点击信号# QApplication.instance获取QCoreApplication对象包含事件主循环,处理和分派所有事件# 点击的信号连接到终止应用程序的退出方法qbtn.clicked.connect(QApplication.instance().quit)qbtn.resize(qbtn.sizeHint())qbtn.move(50, 50)self.setGeometry(300, 300, 350, 250)self.setWindowTitle('Quit Button')self.show()    def main():    app = QApplication(sys.argv)    w = Bubble()sys.exit(app.exec())    if __name__ == '__main__':main()

弹框

点击关闭时弹出确认框确认是否关闭。

import sys
from PyQt6.QtWidgets import (QApplication, QWidget, QMessageBox)class Popup(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setGeometry(300, 300, 350, 250)self.setWindowTitle('消息框')self.show()    def closeEvent(self, event):reply = QMessageBox.question(self, 'Message', '确定退出?', QMessageBox.StandardButton.Yes|QMessageBox.StandardButton.No,QMessageBox.StandardButton.No)if reply == QMessageBox.StandardButton.Yes:event.accept()else:event.ignore()def main():    app = QApplication(sys.argv)    w = Popup()sys.exit(app.exec())    if __name__ == '__main__':main()

窗口居中显示

import sys
from PyQt6.QtWidgets import (QApplication, QWidget, QMessageBox)class Popup(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.resize(350, 250)self.center()self.setWindowTitle('居中')self.show()    def center(self):# 得到一个矩形窗口qr = self.frameGeometry()# 从屏幕属性中计算出分辨率cp = self.screen().availableGeometry().center()qr.moveCenter(cp)self.move(qr.topLeft())def main():    app = QApplication(sys.argv)    w = Popup()sys.exit(app.exec())    if __name__ == '__main__':main()

菜单和工具栏

QMainWindow类提供了主程序窗口,可以创建一个具有状态栏、工具栏和菜单栏的经典应用框架。

(1)状态栏显示就绪

import sys
from PyQt6.QtWidgets import (QApplication, QMainWindow)class StateColumn(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):self.statusBar().showMessage('就绪')self.setGeometry(300, 300, 250, 250)self.setWindowTitle('状态栏')self.show()        def main()
http://www.lryc.cn/news/330818.html

相关文章:

  • PhpWord导入试卷
  • C# 运算符重载 之前的小总结
  • XenCenter 2024 创建一个虚拟机
  • tomcat 知多少
  • 【详细讲解语言模型的原理、实战与评估】
  • Predict the Next “X” ,第四范式发布先知AIOS 5.0
  • PCL使用4PCS配准
  • 【六 (2)机器学习-机器学习建模步骤/kaggle房价回归实战】
  • vue源码解析——vue如何将template转换为render函数
  • 深入理解zookeeper
  • 【漏洞复现】WordPress Plugin LearnDash LMS 敏感信息暴漏
  • phpmyadmin页面getshell
  • 题目:学习static定义静态变量的用法
  • 【C++】编程规范之函数规则
  • HTML常用的图片标签和超链接标签
  • 浏览器工作原理与实践--WebAPI:XMLHttpRequest是怎么实现的
  • TCP网络协议栈和Posix网络部分API总结
  • 《解释器模式(极简c++)》
  • c#仿ppt案例
  • 10.图像高斯滤波的原理与FPGA实现思路
  • WebGIS 地铁交通线网 | 图扑数字孪生
  • Docker 哲学 - push 本机镜像 到 dockerhub
  • 大数据学习第十二天(hadoop概念)
  • 管理科学笔记
  • WebKit结构简介
  • Kaggle:收入分类
  • 【Go】十七、进程、线程、协程
  • 深入剖析JavaScript中的this(上)
  • Junit深入讲解(JAVA单元测试框架)
  • Spring boot如何执行单元测试?