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 QDate

now = 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, Qt

now = 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, Qt

now = 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, QWidget

def 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 QFont

class 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 QFont

class 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()
  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐江小鱼

知识创造财富,余额还是小数

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值