使用3组GUI控制3个类的实例

时间:2018-03-15 09:17:59

标签: python-3.x pyqt5 qt-designer

我有3个相同的物理仪器。我可以通过实例化InstrumentDriver类来单独控制每个乐器。

我有一个Ui_MainWindow类,它是从Qt Designer自动创建的(通过pyuic5)。这个类包含“重复”控件:我有3组相同的UI控件(按钮,lineEdits等),每个控件用于控制一个乐器。

我有一个InstrumentGui类来完成Ui_MainWindow中定义的UI元素与InstrumentDriver允许的操作之间的映射。 InstrumentGui也会被实施3次。

我不知道如何将GUI控件绑定到InstrumentDriver类的特定实例:

class InstrumentGui :
    def __init__(self, instrument: InstrumentDriver, ui: Ui_MainWindow, type: str)
        # How do I reach toolButton_startA if type=="A",
        # toolButton_startB if type == "B", etc.?
        ui.toolButton_startA.clicked.connect(instrument.start)

ui = Ui_MainWindow()

instrumentA = InstrumentDriver(address=1)
instrumentGuiA = InstrumentGui(instrumentA, ui, "A")

instrumentB = InstrumentDriver(address=2)
instrumentGuiB = InstrumentGui(instrumentB, ui, "B")

instrumentC = InstrumentDriver(address=3)
instrumentGuiC = InstrumentGui(instrumentC, ui, "C")

我的第一个想法是使用变量名称,例如setattr(self, "start_button", "toolButton_start"+type),但是从我没有设法让它起作用的事实,我到处读到这是一个不好的做法。

如果可能的话,保持Qt Designer构建GUI布局的方法是什么?这样做的智能方法是什么?

0 个答案:

没有答案