PyQt6 微信提醒工具 QTableView的使用

PyQt6 微信提醒工具 之 QTableView的使用

由于老人帮忙接送小孩,常常忘记时间,所以编写一个自动发送微信消息的小应用

创建

初始化TableView的实例

# 表格使用QTableView类
self.tableView = QtWidgets.QTableView(parent=self.centralwidget)

创建表头数据,注意使用QStandardItemMode

from PyQt6.QtGui import QStandardItemModel,QStandardItem

headers = ["主题", "接收者1", "接收者2", "内容", "星期几", "时间"]

self.model = QStandardItemModel(5, len(headers))
for i, header in enumerate(headers):
    self.model.setHorizontalHeaderItem(i, QStandardItem(header))

更新模型数据model

def _update_table_data(self):
    datas = getWechatDb().query_all()  # 从sqlite3 读取表内的数据
    self.model.setRowCount(len(datas))  #  设置显示多少行,此处是根据表中的数据读取
    self.tableView.setSortingEnabled(True) # 是否支持排序,如果是True, 则表头点击,可以进行排序的
    for row, items in enumerate(datas):
        for col, item in enumerate(items):
            item_model = QStandardItem(str(item))
            item_model.setToolTip(str(item))   # 鼠标放入单元格中,会提示,提示内容根据传入的值
            item_model.setTextAlignment(Qt.AlignmentFlag.AlignCenter)  # 设置表格的内容居中显示
            font = item_model.font()
            font.setPointSize(10)  # 设置字体大小
            item_model.setFont(font)

            self.model.setItem(row, col, item_model)  # 最重要的,在多少行,多少列,设置什么数据

细节调整

self._update_table_data()  # 上面已经包含
vh = self.tableView.verticalHeader()
vh.setVisible(False) # 隐藏左侧的序号

# 只允许选择一行,不支持选择一行中的列
self.tableView.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows)
# 不能选择多行,只能选择一行
self.tableView.setSelectionMode(QAbstractItemView.SelectionMode.SingleSelection)

# 最重要的,将tableview和model关联起来
self.tableView.setModel(self.model)

通过以上代码,我们就实现了TableView的展示数据的能力,只能展示肯定远远不够,如何进行修改/创建/删除呢?!

修改/创建/删除

对于新增,只需要写入数据库,并更新model数据即可。
对于修改/删除如下:

# 选择被选择的行数据
selectedIndexes = self.tableView.selectedIndexes()
if selectedIndexes:
    # 第一行,第一列的数据
    topic = selectedIndexes[0].data()
    rowToDelete = selectedIndexes[0].row() # 选择当前行数据
    # 软件删除,不显示当前行,表格中不显示此行
    self.model.removeRow(rowToDelete)
    # 删除sqlite3中的数据
    getWechatDb().del_data(topic)

展示

展示效果如下
微信提醒工具截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值