Ho 2 radiobutton creato (all'interno di un QMainWindow classe) come:
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
Voglio rendere impossibile per selezionare il complex
opzione di dimensione tipo radiobutton gruppo e tensorflow
radiobutton della biblioteca radiobutton. Lasciando 3 dei 4 possibili combinazioni. Quindi, se devo selezionare complex
e la biblioteca è stata tensorflow
Voglio cambiare automaticamente la libreria cvnn
. Ho cercato di attuare questo modo:
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 cosa strana è che in realtà funziona, nel senso che, per esempio, se ho un complex
attivato e selezionare tensorflow
il radiobutton modifiche real
(quello che voglio!) ma tensorflow
non avere selezionato! Ho bisogno di selezionare di nuovo come se stesse facendo self.real_dtype_rb.setChecked(True)
per annullare la selezione dei radiobutton ho cliccato su. (Molto strano se mi chiedete).
Il
hasattr
viene utilizzato, perché a seconda dell'ordine che io chiamo il funzioni, ci sono alcuni pulsanti di opzione che sarà creato prima l'altro, quindi non potrebbe esistere.Questo è un'opzione che sto valutando, ma è disabilitare il componente radiobutton gruppo invece di cambiare il loro stato (e non quello che preferisco).