J'ai 2 composants radiobutton créé (à l'intérieur d'une classe QMainWindow) comme:
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
Je veux qu'il soit impossible de sélectionner la complex
l'option de la dtype radiobuttons groupe et tensorflow
radiobutton de la bibliothèque de composants radiobutton. En laissant 3 des 4 combinaisons possibles. Donc, si je sélectionne complex
et la bibliothèque a été tensorflow
Je veux changer automatiquement la bibliothèque de cvnn
. J'ai essayé de l'appliquer comme ceci:
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.
La chose étrange est que cela fonctionne réellement dans le sens que, par exemple, si je suis sur complex
activé et sélectionnez tensorflow
le radiobutton modifications real
(ce que je veux!) mais tensorflow
ne pas être sélectionné! J'ai besoin de sélectionner de nouveau comme si self.real_dtype_rb.setChecked(True)
annule la sélection de la case d'option j'ai cliqué sur. (Très bizarre si vous me demandez).
L'
hasattr
est utilisé parce que, selon l'ordre que j'appelle le fonctions, il y a certains composants radiobutton qui sera créé avant les autres, il pourrait ne pas exister.Cette est une option que j'envisage, mais c'est la désactivation de la case d'option groupe au lieu de changer leur état (pas ce que je préfère).