pycharm中实现table循环滚动
时间: 2023-11-28 09:47:49 浏览: 186
向上滚动的table
5星 · 资源好评率100%
在 PyCharm 中实现 table 循环滚动需要使用到 Qt 的 QTableView 控件和 QAbstractTableModel 模型。下面是一个简单的示例代码:
```python
from PyQt5.QtCore import Qt, QModelIndex, pyqtSignal, pyqtSlot, QAbstractTableModel
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView, QVBoxLayout, QWidget
class TableModel(QAbstractTableModel):
def __init__(self, data=None):
super().__init__()
self._data = data or []
def rowCount(self, parent=QModelIndex()):
return len(self._data)
def columnCount(self, parent=QModelIndex()):
return len(self._data[0])
def data(self, index, role=Qt.DisplayRole):
if role == Qt.DisplayRole:
return self._data[index.row()][index.column()]
def setData(self, index, value, role=Qt.EditRole):
if role == Qt.EditRole:
self._data[index.row()][index.column()] = value
self.dataChanged.emit(index, index, [Qt.DisplayRole])
return True
return False
class MainWidget(QWidget):
def __init__(self, data):
super().__init__()
self.table_model = TableModel(data)
self.table_view = QTableView()
self.table_view.setModel(self.table_model)
layout = QVBoxLayout()
layout.addWidget(self.table_view)
self.setLayout(layout)
self.current_row = 0
self.row_count = len(data)
@pyqtSlot()
def scroll_table(self):
self.current_row = (self.current_row + 1) % self.row_count
self.table_view.selectRow(self.current_row)
class MainWindow(QMainWindow):
def __init__(self, data):
super().__init__()
self.main_widget = MainWidget(data)
self.setCentralWidget(self.main_widget)
self.timer = QTimer()
self.timer.timeout.connect(self.main_widget.scroll_table)
self.timer.start(1000)
if __name__ == '__main__':
data = [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
app = QApplication([])
window = MainWindow(data)
window.show()
app.exec_()
```
在这个示例中,我们定义了一个 `TableModel` 类来处理表格数据,并将其设置为 `QTableView` 的模型。然后创建一个 `MainWidget` 类来包含 `QTableView` 控件,并定义一个 `scroll_table` 槽函数,用于定时滚动表格。最后,我们创建一个 `MainWindow` 类来包含 `MainWidget` 并启动定时器。
阅读全文