PyQT5 (四十二) 在QTableWidget表格中快速搜索定位到特定行 的案例

在表格中快速搜索定位到特定行 的案例
1.数据的定位:findItems
2.如果找到了满足条件的单元格,会定位到单元格所在的行:setSliderPositon(row)
3.搜索满足条件的Cell 以字符串开头的所有
4.搜索满足条件的Cell 完全匹配
5.搜索满足条件的Cell 包含内容

import sys

from PyQt5 import QtPrintSupport, QtGui
from PyQt5.QtCore import Qt, QMimeData, QDate, QDateTime, QTime, QStringListModel
from PyQt5.QtGui import QIcon, QPainter, QBrush, QPixmap, QStandardItemModel, QStandardItem, QColor
from PyQt5.QtPrintSupport import QPageSetupDialog, QPrinter, QPrintDialog
from PyQt5.QtWidgets import QApplication, QWidget, QComboBox, QFormLayout, QLabel, QLineEdit, QPushButton, QGridLayout, \
    QCalendarWidget, QVBoxLayout, QDateTimeEdit, QAction, QMainWindow, QTextEdit, QStatusBar, QFileDialog, QDialog, \
    QTableView, QMessageBox, QListView, QListWidget, QHBoxLayout, QTableWidget, QTableWidgetItem, QAbstractItemView

'''
在表格中快速搜索定位到特定行 的案例
1.数据的定位:findItems
2.如果找到了满足条件的单元格,会定位到单元格所在的行:setSliderPositon(row)
3.搜索满足条件的Cell 以字符串开头的所有
4.搜索满足条件的Cell 完全匹配
5.搜索满足条件的Cell 包含内容
'''


class DataLocationDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 设置定位和左上角坐标
        self.setGeometry(300, 300, 460, 360)
        # 设置窗口标题
        self.setWindowTitle('QTableWidget扩展表格的单元格放置控件 的演示')
        # 设置窗口图标
        # self.setWindowIcon(QIcon('../web.ico'))

        layout = QHBoxLayout()
        tablewidget = QTableWidget()
        tablewidget.setRowCount(40)
        tablewidget.setColumnCount(4)

        layout.addWidget(tablewidget)
        tablewidget.setHorizontalHeaderLabels(['姓名','性别','体重(kg)'])

        for i in range(40):
            for j in range(4):
                itemContent = '(%d行,%d列)' %(i,j)
                tablewidget.setItem(i,j,QTableWidgetItem(itemContent))

        # 搜索满足条件的Cell #完全匹配
        text = '(13行,1列)'
        items = tablewidget.findItems(text, Qt.MatchExactly)

        if len(items)>0:
            item = items[0]
            item.setBackground(QBrush(QColor(0,255,0)))
            item.setForeground(QBrush(QColor(255,0,0)))
            row = item.row()
            # 定位到指定行
            tablewidget.verticalScrollBar().setSliderPosition(row)

        # 搜索满足条件的Cell 以字符串开头的所有
        text = '(10行'
        items = tablewidget.findItems(text, Qt.MatchStartsWith)
        # items = tablewidget.findItems(text, Qt.MatchContains) # 包含内容
        if len(items) > 0:
            if len(items) > 0:
                # 定位到第一行
                tablewidget.verticalScrollBar().setSliderPosition(items[0].row())
                for i in range(len(items)):
                    items[i].setBackground(QBrush(QColor(0, 255, 0)))
                    items[i].setForeground(QBrush(QColor(255, 0, 0)))


        self.setLayout(layout)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    # 设置应用图标
    app.setWindowIcon(QIcon('../web.ico'))
    w = DataLocationDemo()
    w.show()
    sys.exit(app.exec_())

  • 2
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PyQt5是一个Python编程语言的工具包,用于创建图形用户界面(GUI)。SQLite是一个轻量级的嵌入式数据库引擎,它可以轻松地集成到应用程序QTableWidgetPyQt5一个用于显示和编辑二维表格数据的小部件。 在PyQt5,使用QTableWidget来显示SQLite数据库的数据,可以按照以下步骤进操作: 1. 首先,导入需要的模块:`from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem` 并连接到SQLite数据库:`import sqlite3` 2. 创建一个继承自QMainWindow的自定义窗口类,并在窗口的初始化方法设置布局等属性。 3. 创建一个QTableWidget实例,并设置它的数和列数:`table = QTableWidget(row_count, col_count)` 4. 连接到SQLite数据库:`conn = sqlite3.connect('your_database.db')` 5. 创建一个游标对象:`cursor = conn.cursor()` 6. 执SQL查询语句获取数据库的数据:`cursor.execute('SELECT * FROM your_table')` 7. 使用fetchall()方法获取查询结果:`data = cursor.fetchall()` 8. 遍历查询结果,并将数据逐添加到QTableWidget:`for row_number, row_data in enumerate(data):` `for column_number, column_data in enumerate(row_data):` `table.setItem(row_number, column_number, QTableWidgetItem(str(column_data)))` 9. 最后,关闭数据库连接:`conn.close()` 10. 将QTableWidget添加到窗口的主布局:`self.setCentralWidget(table)` 通过以上步骤,就可以使用PyQt5和SQLite数据库来显示自定义表格数据。在需要时,可以根据需求对QTableWidget自定义样式的设置,例如设置列宽、高、表头等。 希望以上回答对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值