我有两个QTableWidgetItems
。每个都有多个 QPushButtons
设置为其中的单元格小部件。
目前,对于一个QTableWidget
,我正在使用self.sender()
来找出正在按下的按钮的行和列:
button = self.sender()
index = self.Table.indexAt(button.pos())
currentRow = index.row()
mydata = str(self.Table.item(currentRow, 2).text())
但是,我想将两个表的 QpushButtons
连接到同一个函数。因此,如果我有表 A 和表 B 都将 QPushButtons 连接到相同的功能。
当按钮被点击时,我如何知道它是属于表 A 还是表 B?
最佳答案
正如 Matyas Kuti 所说,您可以使用 parent
。我为此做了一个例子。
from PySide import QtGui
class MyTableWidget(QtGui.QTableWidget):
def __init__(self):
super().__init__(None)
button = QtGui.QPushButton('Click me', self)
button.clicked.connect(self.buttonClicked)
self.setCellWidget(2, 1, button)
def buttonClicked(self):
button = self.sender()
print(button.parent() is self)
app = QtGui.QApplication([])
table = MyTableWidget()
table.show()
app.exec_()
单击按钮时,输出为True
。示例位于 Python 3.X 和 PySide 中,但也应适用于所有 Python 和 PyQt。
编辑:如果您没有直接从 QTableWidget
继承,但 QTableWidget
和按钮都是另一个对象的子级,只需在公共(public)对象中存储对表的引用即可父级使用已知名称(例如“table”),然后访问如下:
button.parent().table
关于python - 如何找出一个QPushbutton属于哪个QTableWidget?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24257178/