pyside/pyqt:绑定共享相同功能的多个按钮的简单方法

lam*_*mba 2 python user-interface qt pyqt pyside

我是PyQt/PySide的新手.

我有很多行编辑(用于显示文件位置)和每行文本我有一个按钮(显示打开文件对话框).

我有一个方法:

   def selectSelf1(self): 
        """ browse for file dialog """
        myDialog = QtGui.QFileDialog
        self.lineSelf1.setText(myDialog.getOpenFileName())
Run Code Online (Sandbox Code Playgroud)

并使用以下代码绑定按钮

    self.btnSelf1.clicked.connect(self.selectSelf1)
Run Code Online (Sandbox Code Playgroud)

我有大约20个按钮和20个行编辑.有没有一种简单的方法可以将所有这些按钮绑定到相应的行编辑,而不是键入所有内容.

谢谢!

rec*_*dev 5

如果您有一个按钮和LineEdits列表,您可以使用以下内容:

如果您使用Qt Designer,并且没有按钮和lineedits列表,但它们都具有相同的命名模式,您可以使用一些内省:

class Foo(object):
    def __init__(self):
        self.edit1 = 1
        self.edit2 = 2
        self.edit3 = 3
        self.button1 = 1
        self.button2 = 2
        self.button3 = 3

    def find_attributes(self, name_start):
        return [value for name, value in sorted(self.__dict__.items())
                          if name.startswith(name_start)]

foo = Foo()
print foo.find_attributes('edit')
print foo.find_attributes('button')
Run Code Online (Sandbox Code Playgroud)