Python中文
首页
教程
问答
标签
搜索
登录
注册
如何检测用户在PyQt4中点击QTableWidget的cellwidget的行数和列数?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我的目标是将<code>multiple QPushButton</code>设置为<code>cellwidget</code>中的<code>QTableWidget</code>,每当用户单击这些按钮中的任何一个,它都会打印出表中的<code>Row</code>和<code>Column</code>个数。</p> <p>所以,对于1<code>QPushButton</code></p> <pre><code>import sys from PyQt4 import QtGui,QtCore def 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_() </code></pre> <p><img src="https://i.stack.imgur.com/24FNb.gif" alt="enter image description here"/></p> <p>当我单击每个按钮时,它将很好地打印出行数和列数。但是当我改变函数<code>AddValues</code>以容纳多个按钮时:</p> <pre><code>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,1,buttons_widget) button1.clicked.connect(CurrentPos) button2.clicked.connect(CurrentPos) button3.clicked.connect(CurrentPos) </code></pre> <p><img src="https://i.stack.imgur.com/3MqGv.gif" alt="enter image description here"/></p> <p>它不再打印正确的行和列编号。相反,它只会根据按钮的位置打印(0,0)或(0,1)。</p> <p>我试图打印出<code>QtGui.qApp.focusWidget()</code>,它给了我<code><PyQt4.QtGui.QPushButton object at 0x014B56F0></code>据我所知,focus小部件是我正在单击的实际<code>QPushButton</code>,而不是名为<code>QWidget</code>的<code>buttons_widget</code>。</p> <p>我唯一的怀疑是<code>.pos()</code>方法返回相对于其父小部件的位置,即<code>QWidget (buttons_widget)</code>,而不是<code>QTableWidget</code>本身。但我似乎找不到<code>.pos()</code>方法的文档。</p> <p>所以,我如何修改我的代码,以便每当用户单击3个按钮中的任何一个,它都会打印出当前按钮所在的行和列的编号。</p> <p>我使用的是windows xp SP3和Python 2.7.3</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<pre><code> buttonClicked = self.sender() index = self.table.indexAt(buttonClicked.pos()) print index.row() </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何重塑数组、迭代列的所有行并将重塑后的数组分配给新列?Python/Pandas/Numpy
1 回答
如何重塑数组的形状?
10 回答
如何重塑文本数据以适应keras的LSTM模型
6 回答
如何重塑未对齐的数据集,并使用numpy丢弃剩余数据?
10 回答
如何重塑此数据以使用绘图
1 回答
如何重塑此数据帧?
10 回答
如何重塑此数据集以适应RNN
5 回答
如何重塑没有列的数组?
9 回答
如何重塑测试数据帧,使其维数与训练和预测工作中使用的维数相同?
1 回答
如何重塑系列以在StandardScaler中使用它
9 回答
如何重塑线性回归的数据
1 回答
如何重塑线性回归的数据?
1 回答
如何重塑表格?
5 回答
如何重塑要堆叠的重复宽数据帧?
8 回答
如何重塑输入以放入二维层?
10 回答
如何重塑输入神经网络的三通道数据集
9 回答
如何重塑这个numpy数组
7 回答
如何重塑这个numpy数组以排除“额外维度”?
1 回答
如何重塑这个numpy阵列?
4 回答
如何重塑这个数据帧
5 回答