Pyqt4 中的点击信号



>我有一个按钮列表,根据用户输入的特定数字向用户显示。例如,如果用户输入 2,则只会显示 2 个按钮。 执行此操作的代码如下所示: def set(self):
global seismicAttributeCount,lineEditlist seismicAttributeCount
=int(self.ui.lineEdit_23.text())mygroupbox = QtGui.QGroupBox()

myform = QtGui.QFormLayout()
labellist = []
buttonList= []
for i in range(seismicAttributeCount):lineEditlist.append(QtGui.QLineEdit())

buttonList.append(QtGui.QPushButton('Browse Attribute %i'%(i+1))) myform.addRow(lineEditlist[i],buttonList[i])mygroupbox.setLayout(myform)self.ui.scrollArea_12.setWidget(mygroupbox)self.ui.scrollArea_12.setWidgetRessizeable(True)


for i in range(seismicAttributeCount):
if buttonList[i].clicked.connect():
print i

我想点击按钮的索引。任何帮助将不胜感激。

您可能想研究functools.partial。这允许您将event与方法和特定输入连接起来。我在这里做了一个最小的GUI示例,它可以做你想要的

from PyQt4 import QtGui, QtCore
import sys
import functools
class test(QtGui.QWidget):
def __init__(self,parent=None):
self.widget=QtGui.QWidget.__init__(self, parent)
# Button to add buttons
self.btnAdd = QtGui.QPushButton('Add')
self.btnAdd.connect(self.btnAdd, QtCore.SIGNAL('clicked()'), self.btnAddPressed)
# Line edit for number of buttons
self.qleN = QtGui.QLineEdit(str(0))
# List to keep track of buttons
self.buttons=[]
# Layout
self.hbox = QtGui.QHBoxLayout()
self.hbox.addWidget(self.btnAdd)
self.hbox.addWidget(self.qleN)
self.setLayout(self.hbox)   

self.show()
def btnAddPressed(self):
"""Adds number of buttons."""
# Get number of buttons to add
n=int(self.qleN.text())
self.buttons=[]
for i in range(n):
# Create new button
newBtn = QtGui.QPushButton(str(i))
self.buttons.append(newBtn)
# Connect
newBtn.clicked.connect(functools.partial(self.btnPressed,i))
self.hbox.addWidget(newBtn) 
def btnPressed(self,idx):
"""Returns idx of btn."""
print idx
return idx
def main():
#Creating application   
app = QtGui.QApplication(sys.argv)
main_win = test()
sys.exit(app.exec_())
if __name__ == '__main__':
main()

请注意如何将按钮与functools调用和按钮索引连接起来。

顺便说一下,下次,请努力并正确格式化您的问题。

最新更新