Eu tenho 2 radiobuttons criou (dentro de um QMainWindow classe) como:
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
Eu quero fazer é impossível para selecionar o complex
opção de dtype radiobuttons grupo e tensorflow
radiobutton da biblioteca radiobuttons. Deixando 3 das 4 combinações possíveis. Então, se eu selecionar complex
e a biblioteca foi tensorflow
, Eu quero mudar automaticamente a biblioteca cvnn
. Eu tentei implementá-lo assim:
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.
O mais estranho é que ele realmente funciona, no sentido de que, por exemplo, se eu estou em complex
ativado e selecione tensorflow
o radiobutton alterações real
(o que eu quero!) mas tensorflow
não seja selecionado! Eu preciso selecioná-lo novamente como se estivesse a fazer self.real_dtype_rb.setChecked(True)
cancela a seleção do radiobutton, cliquei. (Muito estranho se você me perguntar).
O
hasattr
é usado porque dependendo da ordem que eu chame a funções, existem alguns radiobuttons que vai ser criado antes o outro, por isso não pode existir.Este é uma opção que eu estou pensando, mas é desabilitar o botão de opção grupo em vez de alterar o seu estado (não o que eu prefiro).