我有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布局的方法是什么?这样做的智能方法是什么?