Как организовать взаимодействие двух виджетов через третий класс
Есть два экземпляра QComboBox
в разных классах. Необходимо, чтобы при выборе значения из одного комбобокса, такое значение появлялось в другом комбобоксе.
Взаимодействие комбобоксов должно происходить через изменения атрибутов третьего класса.
Я написал такой код. Вроде работает как надо, но мне кажется код некорректный.
from PyQt5.QtWidgets import *
import sys
class A:
a = ""
def get_a():
return A.a
def set_a(s):
A.a = s
B.comboBox.addItem(A.get_a())
class B(QGroupBox):
def __init__(self):
super().__init__("Получить значение")
self.initUI()
def initUI(self):
B.comboBox = QComboBox()
self.vBox = QVBoxLayout()
self.vBox.addWidget(self.comboBox)
self.setLayout(self.vBox)
class C(QGroupBox):
def __init__(self):
super().__init__("Выбрать значение:")
self.initUI()
def initUI(self):
self.comboBox = QComboBox()
for i in ["1","2","3"]:
self.comboBox.addItem(i)
self.comboBox.activated[str].connect(A.set_a)
self.vBox = QVBoxLayout()
self.vBox.addWidget(self.comboBox)
self.setLayout(self.vBox)
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Example")
window.resize(200, 200)
b = B()
c = C()
layout = QVBoxLayout()
layout.addWidget(c)
layout.addWidget(b)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
Вопрос такой, как правильно написать код?
Источник: Stack Overflow на русском