gpt4 book ai didi

Python PyQt4 QTableWidget CellWidget 滚动列值

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

我有一个具有以下属性的 QTablWidget:

        mytable.setEditTriggers(QtGui.QTableWidget.NoEditTriggers)
mytable.setSelectionBehavior(QtGui.QTableWidget.SelectRows)
mytable.setSelectionMode(QtGui.QTableWidget.SingleSelection)
mytable.horizontalHeader().setStretchLastSection(True)
mytable.verticalHeader().hide()

在表格的每一行,我都有一个 QPushButton 设置在 CellWidget 上,如下所示:

enter image description here

一旦用户按下任何按钮,有什么方法可以获取QPushButton所在表格的行号吗?

例如,如果用户单击表格第 2 行上的QPushButton,则返回值 2。

编辑2

根据其中一个答案,我已将代码更新为:但我仍然没有得到任何结果。我哪里出错了?我尝试打印 self.table.itemAt(button.pos()) 的输出,但得到 None

from PyQt4 import QtGui,QtCore
import sys

class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self,parent)
self.table = QtGui.QTableWidget()
self.table.setColumnCount(3)
self.setCentralWidget(self.table)
data1 = ['orange','apple','banana','lemon']
data2 = ['3','4','5.5','2']

self.table.setRowCount(4)

for i in range(4):
item1 = QtGui.QTableWidgetItem(data1[i])
self.table.setItem(i,0,item1)
item2 = QtGui.QTableWidgetItem(data2[i])
self.table.setItem(i,1,item2)
self.button = QtGui.QPushButton('TEST')
self.button.clicked.connect(self.handleButtonClicked)
self.table.setCellWidget(i,2,self.button)

def handleButtonClicked(self):
button = self.sender()
item = self.table.itemAt(button.pos())
if item is not None:
print (item.row(),item.column())


def Main():
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
app.exec_()

if __name__ == '__main__':
Main()

最佳答案

如果您可以获得对所单击按钮的引用,则 QTableView.indexAt可以用来获取对应的索引:

    button.clicked.connect(self.handleButtonClicked)
...

def handleButtonClicked(self):
button = QtGui.qApp.focusWidget()
# or button = self.sender()
index = self.table.indexAt(button.pos())
if index.isValid():
print(index.row(), index.column())

关于Python PyQt4 QTableWidget CellWidget 滚动列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22801771/

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