那么,对于1个QPushbutton,
import sysfrom PyQt4 import QtGui,QtCoredef CurrentPos(): clickme = QtGui.qApp.focusWidget() index = table.indexAt(clickme.pos()) if index.isValID(): print (index.row(),index.column())def AddValues(): table.setRowCount(5) for i in range(5): button = QtGui.QPushbutton('Click1') table.setCellWidget(i,1,button) button.clicked.connect(CurrentPos)if __name__ == "__main__": app = QtGui.QApplication(sys.argv) table = QtGui.QtableWidget() table.setFixedSize(QtCore.QSize(330,250)) table.setEditTriggers(QtGui.QtableWidget.NoEditTriggers) table.setSelectionBehavior(QtGui.QtableWidget.SelectRows) table.setSelectionMode(QtGui.QtableWidget.NoSelection) table.horizontalheader().setStretchLastSection(True) table.setFocusPolicy(QtCore.Qt.NoFocus) table.setColumnCount(3) table.setHorizontalheaderLabels(['A','B','C']) table.setColumnWIDth(0,50) table.setColumnWIDth(1,200) table.show() AddValues() app.exec_()
当我点击每个按钮时,它会打印出行和列号就好了.但是当我更改AddValues函数以容纳多个按钮时:
def AddValues(): table.setRowCount(5) for i in range(5): button1 = QtGui.QPushbutton('Click1') button2 = QtGui.QPushbutton('Click2') button3 = QtGui.QPushbutton('Click3') button_layout = QtGui.QHBoxLayout() button_layout.addWidget(button1) button_layout.addWidget(button2) button_layout.addWidget(button3) buttons_Widget = QtGui.QWidget() buttons_Widget.setLayout(button_layout) table.setCellWidget(i,buttons_Widget) button1.clicked.connect(CurrentPos) button2.clicked.connect(CurrentPos) button3.clicked.connect(CurrentPos)
它不再打印出正确的行号和列号.相反,它只会打印(0,0)或(0,1),具体取决于按钮的位置.
我试图打印出QtGui.qApp.focusWidget(),它给我< PyQt4.QtGui.QPushbutton对象在0x014B56F0>所以据我所知,焦点小部件是我点击的实际QPushbutton,而不是名为buttons_Widget的QWidget.
我唯一怀疑的是.pos()方法返回相对于它的父窗口小部件的位置,它是QWidget(buttons_Widget)而不是QtableWidget本身.但我似乎无法找到.pos()方法的文档.
那么,我如何修改我的代码,以便每当用户点击3个按钮中的任何一个时,它就会打印出当前所在按钮的行号和列号.
我使用的是windows XP SP3和Python 2.7.3
解决方法buttonClicked = self.sender() index = self.table.indexAt(buttonClicked.pos()) print index.row()总结
以上是内存溢出为你收集整理的如何检测在PyQt4中点击QTableWidget的cellwidget用户的行号和列号?全部内容,希望文章能够帮你解决如何检测在PyQt4中点击QTableWidget的cellwidget用户的行号和列号?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)