PyQT5项目1——时区转换工具

    首先来熟悉一下PyQT5的一些常用的属性和用法,以及在函数代码定义,构造,声明,调用等操作的时候的写法。

    话不多说直接上代码:

import sys
from PyQt5 import QtWidgets, QtCore
from datetime import datetime
import pytz

class MainWindow(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("时区转换器")
        self.setFixedSize(400, 300)

        # 创建一个DateTime框
        self.dateTimeEdit = QtWidgets.QDateTimeEdit(self)
        self.dateTimeEdit.setDateTime(QtCore.QDateTime.currentDateTime())
        self.dateTimeEdit.setDisplayFormat("yyyy-MM-dd HH:mm:ss")

        # 创建四个按钮
        self.button1 = QtWidgets.QPushButton("中国时间", self)
        self.button2 = QtWidgets.QPushButton("欧盟时间", self)
        self.button3 = QtWidgets.QPushButton("韩国时间", self)
        self.button4 = QtWidgets.QPushButton("巴西时间", self)

        # 设置布局
        layout = QtWidgets.QVBoxLayout(self)
        layout.addWidget(self.dateTimeEdit)
        layout.addWidget(self.button1)
        layout.addWidget(self.button2)
        layout.addWidget(self.button3)
        layout.addWidget(self.button4)

        # 绑定点击事件
        self.button1.clicked.connect(self.show_china_time)
        self.button2.clicked.connect(self.show_eu_time)
        self.button3.clicked.connect(self.show_korea_time)
        self.button4.clicked.connect(self.show_brazil_time)

    def show_china_time(self):
        tz = pytz.timezone('Asia/Shanghai')
        now = datetime.now(tz).strftime('%Y-%m-%d %H:%M:%S')
        self.dateTimeEdit.setDateTime(QtCore.QDateTime.fromString(now, 'yyyy-MM-dd HH:mm:ss'))

    def show_eu_time(self):
        tz = pytz.timezone('Europe/Paris')
        now = datetime.now(tz).strftime('%Y-%m-%d %H:%M:%S')
        self.dateTimeEdit.setDateTime(QtCore.QDateTime.fromString(now, 'yyyy-MM-dd HH:mm:ss'))

    def show_korea_time(self):
        tz = pytz.timezone('Asia/Seoul')
        now = datetime.now(tz).strftime('%Y-%m-%d %H:%M:%S')
        self.dateTimeEdit.setDateTime(QtCore.QDateTime.fromString(now, 'yyyy-MM-dd HH:mm:ss'))

    def show_brazil_time(self):
        tz = pytz.timezone('America/Sao_Paulo')
        now = datetime.now(tz).strftime('%Y-%m-%d %H:%M:%S')
        self.dateTimeEdit.setDateTime(QtCore.QDateTime.fromString(now, 'yyyy-MM-dd HH:mm:ss'))

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

    在上面的代码中有几个用法需要强调一下:

     ①在self.setFixedSize(400, 300)这段当中用到了setFixSize函数来设置窗口的大小,但实际上除了这种用法之外还有一种是resSize函数,

    二者的区别就是:前者是固定的窗口大小,后者相反,换句话说就是使用setFixSize设置了窗口大小之后,窗口的大小将不能再外部改变(只能修改代码里面的参数),而resSize函数只是一个初始的大小,还可以通过鼠标拖动或者放大的操作来更改窗口的大小。

    ②在self.button1.clicked.connect(self.show_china_time)这段当中用到了QT当中最常用的一种用法就是:槽函数(用户处理函数),常用的为clicked()和toggled()

    二者的区别就是:clicked()是在用户点击一个可点击的界面元素(例如按钮)时触发的事件。该事件表示用户已经完成了一次点击行为。toggled()是在用户改变了一个可切换状态的界面元素(例如复选框、开关按钮)的状态时触发的事件。这意味着用户从一个状态切换到了另一个状态。

    ③在layout = QtWidgets.QVBoxLayout(self)这整段当中都使用了QT当中的布局函数,QVBoxLayout为垂直布局,除此之外还有QHBoxLayout水平布局、QGridLayout网格布局、QFormLayout表单布局、QStackedLayout堆叠布局、QGridLayout栅格布局等,布局在QT当中也是占比较重的一个模块。

    其实很简单就能看出来PyQT5的框架结构就是:

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("xxx") # xxx为窗口的名称
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

    这两部分是PyQT5书写时不变的架构,创建了一个名为MainWindow的窗口类,它继承自QMainWindow。使用self.setWindowTitle定义窗口的标签。而最后使用if __name__ == '__main__':作为整个函数的入口,创建了一个QApplication对象app,实例化了MainWindow窗口类,并调用show方法显示窗口。在最后,使用sys.exit(app.exec())来启动应用程序的事件循环并确保程序正常退出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值