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

PyQt6基础_界面控件简单介绍III

目录

前置: 

QDateEdit 、QDateTimeEdit

QTableWidget


前置: 

1 本系列将以 “PyQt6基础_”开头,放在【PyQt6基础】专栏
2 本文只将界面控件简单讲述,后续博文会对一些控件进一步讲解,会统一放在这个系列里
3 本系列后续会在B站录制视频,到时会在文末贴出链接。本人还是建议先看博文,不懂的再看视频,这样效率高,节约时间。

注意:以下链接虽然是PySide6的官方文档,但PyQt6大部分都通用。

QDateEdit 、QDateTimeEdit

https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/QDateEdit.html  QDateEdit官方文档
https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/QDateTimeEdit.html  QDateTimeEdit官方文档

from PyQt6.QtCore import Qt,QSize,QDate,QDateTime
from PyQt6.QtWidgets import (
QApplication,QWidget,QPushButton,QMainWindow,QLabel,QHBoxLayout,QVBoxLayout,QLineEdit,QMessageBox,
QDateEdit,QDateTimeEdit
 )

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('PyQt6基础')
        self.setMinimumSize(QSize(600,400))

        self.dateedit = QDateEdit()
        self.dateedit.setDate(QDate(2025,1,1))
        self.dateedit.setDisplayFormat('yyyy-MM-dd')
        self.dateedit.userDateChanged.connect(self.dateedit_userDateChanged)
        self.label1 = QLabel()
        self.datetimeedit = QDateTimeEdit()
        self.datetimeedit.setDateTime(QDateTime(2025,1,1,0,0,0))
        self.datetimeedit.setDisplayFormat('yyyy-MM-dd HH:MM:ss')
        self.datetimeedit.dateTimeChanged.connect(self.datetimeedit_dateTimeChanged)
        self.label2 = QLabel()

        layout = QVBoxLayout()
        layout.addWidget(self.dateedit)
        layout.addWidget(self.label1)
        layout.addWidget(self.datetimeedit)
        layout.addWidget(self.label2)

        widget = QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(widget)
        pass
    def dateedit_userDateChanged(self,a0:QDate):
        self.label1.setText(a0.toString('yyyy-MM-dd'))
        pass
    def datetimeedit_dateTimeChanged(self,a0:QDateTime):
        self.label2.setText(a0.toString('yyyy-MM-dd HH:MM:ss'))
        pass



if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec()
    pass

1 这两个控件的操作涉及QDate、QDateTime 两个数据对象,需要了解下才能处理QDateEdit和QDateTimeEdit 日期和时间的获取和放置

https://doc.qt.io/qtforpython-6/PySide6/QtCore/QDateTime.html  QDateTime官方文档
https://doc.qt.io/qtforpython-6/PySide6/QtCore/QDate.html   QDate官方文档

QTableWidget

https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/QTableWidget.html  QTableWidget官方文档

from PyQt6.QtCore import (
QSize
)
from PyQt6.QtWidgets import (
QApplication,
QMainWindow,
QPushButton,
QVBoxLayout,
QWidget,
QTableWidget,
QTableWidgetItem
)

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('哈哈哈')
        self.setMinimumSize(QSize(600, 400))

        btn_add = QPushButton('添加一行数据',clicked=self.btn_add_clicked)

        self.table_widget = QTableWidget()
        self.table_widget.setColumnCount(3)
        self.table_widget.setHorizontalHeaderLabels(['模型名','发布方','更新时间'])

        layout = QVBoxLayout()
        layout.addWidget(btn_add)
        layout.addWidget(self.table_widget)

        widget = QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(widget)
        self.open_init()
        pass
    def open_init(self):
        table_data = [
            ['Qwen2.5-Omni-7B','通义千问','2025-04-01'],
            ['Qwen2.5-VL-32B-Instruct','通义千问','2025-03-27'],
            ['QwQ-32B','通义千问','2025-03-11'],
            ['DeepSeek-V3-0304','DeepSeek','2025-03-25'],
            ['DeepSeek-R1','DeepSeek','2025-03-07'],
            ['MetaStone-L1-7B','MetaStoneTec','2025-03-14']
        ]
        self.table_widget.setRowCount(len(table_data))
        for r,v0 in enumerate(table_data):
            for c,v1 in enumerate(v0):
                one_item = QTableWidgetItem(v1)
                self.table_widget.setItem(r,c,one_item)
        pass
    def btn_add_clicked(self):
        row_count = self.table_widget.rowCount()
        self.table_widget.insertRow(row_count)
        for c,v in enumerate(['我是新添加的项','我是新添加的项','我是新添加的项']):
            one_item = QTableWidgetItem(v)
            self.table_widget.setItem(row_count, c, one_item)
        pass

if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec()
    pass

相关文章:

  • 【夜话系列】DelayQueue延迟队列(上):原理剖析与实现机制
  • 公网专线IP和私网专线IP之间的区别是什么?
  • 定时任务(python)
  • nodejs:midi-writer-js 将基金净值数据转换为 midi 文件
  • 多线程猜数问题
  • AI CUDA 工程师:Agentic CUDA 内核发现、优化和组合
  • 前后台系统
  • JavaScript单例模式
  • JS—Token与JWT
  • [测试] Google Test | 主流的 C 测试框架
  • 2024最新鸿蒙开发面试题合集(二)-HarmonyOS NEXT Release(API 12 Release)
  • 网络命名空间验证网络重叠现象
  • SpringBoot3.x 集成 shardingsphere-jdbc 实现读写分离
  • 26考研|数学分析:反常积分
  • JSON for Modern C++ 解析 JSON(五)
  • 【Git】5 个分区的切换方式及示例
  • idea报错:程序包不存在
  • 【android bluetooth 协议分析 13】【RFCOMM详解 1】【通俗易懂 什么是rfcomm】
  • 数理天地杂志数理天地杂志社数理天地编辑部2025年第6期目录
  • Java的比较器 Comparable 和 Comparator
  • 解锁儿时愿望!潘展乐战胜孙杨,全国冠军赛男子400自夺冠
  • 新闻1+1丨强对流天气频繁组团来袭,该如何更好应对?
  • 联合国:欢迎俄乌伊斯坦布尔会谈,希望实现全面停火
  • 科普|认识谵妄:它有哪些表现?患者怎样走出“迷雾”?
  • 英德宣布开发射程超2000公里导弹,以防务合作加强安全、促进经济
  • “免签圈”扩容,旅游平台:今年以来巴西等国入境游订单显著增加