【问题标题】:Click signal in Pyqt4Pyqt4中的点击信号
【发布时间】:2017-03-22 20:45:23
【问题描述】:

我有一个按钮列表,根据用户输入的特定数字显示给用户。例如如果用户输入 2,那么只会显示 2 个按钮。 执行此操作的代码在这里: def set(self):
全局地震属性计数,线编辑列表
地震属性计数=int(self.ui.lineEdit_23.text())
mygroupbox = QtGui.QGroupBox()
myform = QtGui.QFormLayout()
标签列表 = []
按钮列表= []
对于 i 在范围内(seismicAttributeCount):
lineEditlist.append(QtGui.QLineEdit())
buttonList.append(QtGui.QPushButton('浏览属性%i'%(i+1))) myform.addRow(lineEditlist[i],buttonList[i])
mygroupbox.setLayout(myform)
self.ui.scrollArea_12.setWidget(mygroupbox)
self.ui.scrollArea_12.setWidgetResizable(True)

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

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

【问题讨论】:

    标签: python-2.7 user-interface pyqt4


    【解决方案1】:

    您可能想查看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 调用和按钮的索引连接起来。

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

    【讨论】:

    • 这正是我所需要的。非常感谢你救了我。是的,肯定的,从下次开始我会正确编辑我的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2013-04-24
    • 2015-03-01
    相关资源
    最近更新 更多