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