【发布时间】:2020-03-25 16:25:52
【问题描述】:
我有一个表格,我想通过单击鼠标按钮来更新项目。到目前为止,更新几乎完美无缺。我遇到了一个奇怪的问题,当我单击表格小部件底部的水平滚动条时,它会将单击注册为单击鼠标正上方列中的第一项。
我正在运行 python 3.7,pyqt5。
这是表格:
class PlotTable(QTableWidget):
removed_column = QtCore.pyqtSignal(int)
update_table = QtCore.pyqtSignal(object)
def __init__(self, rows=0, columns=0, parent=None):
QTableWidget.__init__(self, rows, columns, parent)
self.viewport().installEventFilter(self)
def eventFilter(self, source, event):
if event.type() == QtCore.QEvent.MouseButtonPress:
item = self.itemAt(event.pos())
if item is not None and isinstance(item, QTableWidgetItem):
if event.buttons() == QtCore.Qt.MidButton:
col = item.column()
self.removeColumn(col)
self.removed_column.emit(col)
elif event.buttons() == QtCore.Qt.LeftButton:
self.update_table.emit(item)
return super().eventFilter(source, event)
目标是更新表选择或从表中删除列,具体取决于点击类型。我想也许过滤 QTableWidgetItem 可以防止意外滚动条更新,但这也不起作用。
有人知道这里发生了什么吗?
【问题讨论】:
标签: python-3.x pyqt5