gpt4 book ai didi

python - 如何获取Pyqt5表格小部件中的行和列位置(通过鼠标事件突出显示)?

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:46 25 4
gpt4 key购买 nike

我正在使用 pyqt5 表小部件开发 python GUI。如何获取选定区域的行位置和列位置?实际上,在默认的 PyQt5 表小部件中,所选区域以蓝色突出显示。我怎样才能得到这个蓝色的行和列的坐标?谢谢您

最佳答案

获取行和列的方法有多种:

  • 使用selectedIndexes()方法。
for ix in tablewidget.selectedIndexes():
print(ix.row(), ix.column())
  • 使用 selectedItems() 方法,与之前的方法不同,它不会返回空项目。
for it in tablewidget.selectedItems():
print(it.row(), it.column())

如果您想获取选择时的行和列,您必须使用与 QTableWidget 关联的 SelectionModel 的 SelectionChanged 信号。与之前的方法不同,这还会返回取消选择的项目。

from PyQt5 import QtCore, QtGui, QtWidgets


class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.table = QtWidgets.QTableWidget(6, 6)
self.setCentralWidget(self.table)
self.table.selectionModel().selectionChanged.connect(
self.on_selectionChanged
)

@QtCore.pyqtSlot(QtCore.QItemSelection, QtCore.QItemSelection)
def on_selectionChanged(self, selected, deselected):
print("=====Selected=====")
for ix in selected.indexes():
print(ix.row(), ix.column())
print("=====Deselected=====")
for ix in deselected.indexes():
print(ix.row(), ix.column())


if __name__ == "__main__":
import sys

app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())

关于python - 如何获取Pyqt5表格小部件中的行和列位置(通过鼠标事件突出显示)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55970116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com