Python 为通过包装器函数创建的小部件设置按钮信号

Python 为通过包装器函数创建的小部件设置按钮信号,python,pyqt,Python,Pyqt,我正在尝试创建一个GUI(见附件屏幕截图),其中有大约6组小部件,每组小部件由QLabel、QLineEdit和QPushButton组成 我没有一次又一次地编写小部件和布局,而是考虑编写一个包装器函数,这样我只需要编写6行代码就可以创建了 然而,尽管这在创建小部件方面对我来说很有效,但我意识到我无法设置按钮的信号,因为我不知道小部件的名称 如果我决定使用这种包装方法,那么设置信号的最佳方式是什么 以下是我试图实现的目标和代码的屏幕截图: class MyDevTool(QtGui.QWidge

我正在尝试创建一个GUI(见附件屏幕截图),其中有大约6组小部件,每组小部件由QLabel、QLineEdit和QPushButton组成

我没有一次又一次地编写小部件和布局,而是考虑编写一个包装器函数,这样我只需要编写6行代码就可以创建了

然而,尽管这在创建小部件方面对我来说很有效,但我意识到我无法设置按钮的信号,因为我不知道小部件的名称

如果我决定使用这种包装方法,那么设置信号的最佳方式是什么

以下是我试图实现的目标和代码的屏幕截图:

class MyDevTool(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MyDevTool, self).__init__(parent)
        self._create_ui()

    def _create_hbox_layout(self, label):
        h_layout = QtGui.QHBoxLayout()
        label = QtGui.QLabel(label)
        label.setFixedWidth(80)
        line_edit = QtGui.QLineEdit()
        push_btn = QtGui.QPushButton("<<<")

        h_layout.addWidget(label)
        h_layout.addWidget(line_edit)
        h_layout.addWidget(push_btn)

        return h_layout


    def _create_ui(self):
        main_layout = QtGui.QVBoxLayout()
        main_layout.addLayout(
            self._create_hbox_layout("Input Directory")
        )
        main_layout.addLayout(
            self._create_hbox_layout("Output Directory")
        )

        self.setLayout(main_layout)
类MyDevTool(QtGui.QWidget):
def uuu init uuu(self,parent=None):
超级(MyDevTool,self)。\uu初始化(父级)
self.\u创建\u ui()
定义创建hbox布局(自我,标签):
h_layout=QtGui.QHBoxLayout()
label=QtGui.QLabel(标签)
标签。设置固定宽度(80)
行_edit=QtGui.QLineEdit()

按\u btn=QtGui.QPushButton(“如果按第n行,您希望新信号返回给您什么信息?我正在尝试执行类似于
.clicked.connect()的操作)
。例如,在我给出的屏幕截图中,两个按钮都将打开一个文件浏览器,但都指向特定的文件扩展名。例如,InputDirectory按钮将查找.json格式,而OutputDirectory按钮将使用.txt设置路径。这是我遇到问题的部分。类必须是泛型的,不依赖于外部,它必须是要透明,所以我会问,当你按下其中一个按钮时,你想返回什么信息?你走的是一条错误的道路,如果你想创建一个通用的小部件,你必须考虑你想让信号传输什么信息,例如QListView在点击时返回一个QModelIndex,QModelIndex具有项目pr的信息例如,与其他小部件相同,小部件作为一个流程的输入可能是每行的扩展名,当按下按钮时,QFileDialog在内部创建,文件被选中,然后个性化信号指示数据来自哪个扩展名(或行),以及数据。