python - 如何找出一个QPushbutton属于哪个QTableWidget?

标签 python qt pyqt pyqt4 qtablewidget

我有两个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/

相关文章:

python - 在 pandas 数据框中旋转一列并创建 4 个新列

c++ - UI 菜单开发资源

Qt 和 MOC 问题在于简单的 make

python - 如何获取 QPixmap 或 QImage 像素的 RGB 值 - Qt, PyQt

python - 向 QTreeWidget 添加一行

python - 当 QListWidget 索引更改时更新嵌套的 QStackWidget

Python - 脚本从 JSON 读取一个值并将其写入 CSV 200 次

python - 旋转后的图片看起来像缺少像素

python - 如何通过 CQL 直接连接 Cassandra 的示例 (1)

c++ - Q事件所有权