PyQt5基础学习-QTableWidget().findItems(根据文本找出所属位置) 1.QTableWidget().setItem(根据位置设置元素) 2.QTableWidget().verticalScrollBar().setSliderPosition(定位到某一行)

根据查找的文本,对表格中的元素进行搜索, 搜索到的结果返回为item元素, 通过item.row()返回行, item.col()返回列

"""
在表格中快速定位到特定的行

1. 数据的定位: findItems
2. 如果找到满足条件的单元格, 会定位到单元格所在的行: setSliderPosition(row)
"""

import sys
from PyQt5.QtWidgets import *
from PyQt5 import QtCore
from PyQt5.QtGui import QColor, QBrush
from PyQt5 import QtWidgets

class DataLocation(QWidget):
    def __init__(self):
        super(DataLocation, self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("QTableWidget 例子")
        self.resize(600, 800)

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

        layout.addWidget(tableWidget)

        for i in range(40):
            for j in range(4):
                itemContent = "(%d, %d)" % (i, j)
                tableWidget.setItem(i, j, QTableWidgetItem(itemContent))

        self.setLayout(layout)

        #搜索满足条件的Cell
        text = "(13, 1)"
        #进行精确匹配
        items = tableWidget.findItems(text, QtCore.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)

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main = DataLocation()
    main.show()

    sys.exit(app.exec_())

 

posted @ 2022-02-02 20:36  c语言我的最爱  阅读(2568)  评论(0编辑  收藏  举报