Mam 2 przełączniki, utworzone (wewnątrz klasy QMainWindow), takie jak:
def dtype_radiobuttons(self):
layout = QHBoxLayout()
rb1 = QRadioButton("complex")
rb1.toggled.connect(lambda: self.update_image("dtype", rb1.text()))
self.real_dtype_rb = QRadioButton("real", self)
self.real_dtype_rb.toggled.connect(lambda: self.update_image("dtype", self.real_dtype_rb.text()))
self.btngroup.append(QButtonGroup())
self.btngroup[-1].addButton(self.real_dtype_rb)
self.btngroup[-1].addButton(rb1)
rb1.setChecked(True)
layout.addWidget(rb1)
layout.addWidget(self.real_dtype_rb)
layout.addStretch()
return layout
def library_radiobutton(self):
layout = QHBoxLayout()
self.cvnn_library_rb = QRadioButton("cvnn", self)
self.cvnn_library_rb.toggled.connect(lambda: self.update_image("library", self.cvnn_library_rb.text()))
rb2 = QRadioButton("tensorflow", self)
rb2.toggled.connect(lambda: self.update_image("library", rb2.text()))
self.btngroup.append(QButtonGroup())
self.btngroup[-1].addButton(rb2)
self.btngroup[-1].addButton(self.cvnn_library_rb)
self.cvnn_library_rb.setChecked(True)
layout.addWidget(self.cvnn_library_rb)
layout.addWidget(rb2)
layout.addStretch()
return layout
Chcę zrobić niemożliwe wybór complex
opcja grupy przełączników i dtype tensorflow
радиобуттон bibliotecznych радиобуттонов. Pozostawiając 3 z 4 możliwych kombinacji. Dlatego, jeśli wybiorę complex
i biblioteka była tensorflow
Chcę się automatycznie zmienić na bibliotekę cvnn
. Próbowałem zrealizować to tak:
def update_image(self, key, value):
if value == "complex":
if hasattr(self, 'cvnn_library_rb'): # It wont exists if I still didnt create the radiobutton.
self.cvnn_library_rb.setChecked(True) # Set library cvnn
elif value == "tensorflow":
if hasattr(self, 'real_dtype_rb'):
self.real_dtype_rb.setChecked(True) # Set real dtype
... Do the other stuff I need to do.
Dziwne jest to, że to rzeczywiście działa w tym sensie, że, na przykład, jeśli jestem na complex
aktywowany i wybierz tensorflow
, радиобуттон zmienia się na real
(czego chcę!) ale tensorflow
nie wybiera! Muszę wybrać go ponownie, jakby co self.real_dtype_rb.setChecked(True)
anuluje wybór radia, na który kliknąłem. (Bardzo dziwne, jeśli o mnie).
To
hasattr
jest używany, ponieważ w zależności od kolejności, w której dzwonię funkcje, niektóre przełączniki zostaną utworzone wcześniej innych, więc może nie istnieć.Ten jest to wariant, który biorę pod uwagę, ale on wyłącza grupę radiobutton zamiast zmiany ich stanu (nie to, że wolę).