Am 2 butoane radio creat (în interiorul unui QMainWindow clasa), cum ar fi:
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
Vreau pentru a face imposibilă pentru a selecta complex
opțiunea de dtype grup de butoane radio și tensorflow
radiobutton de biblioteca butoane radio. Lăsând la 3 din cele 4 combinatii posibile. Deci, dacă am selecta complex
și bibliotecă, a fost tensorflow
Vreau pentru a schimba în mod automat în biblioteca pentru a cvnn
. Am încercat să-l pună în aplicare astfel:
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.
Lucru ciudat este că funcționează de fapt, în sensul că, de exemplu, dacă eu sunt pe complex
activat și selectați tensorflow
, la radiobutton modificări real
(ceea ce vreau eu!) dar tensorflow
nu-aleasă! Trebuie să selectați din nou ca și cum ar face self.real_dtype_rb.setChecked(True)
anulează selecția radiobutton-am făcut clic pe. (Foarte ciudat dacă mă întrebi pe mine).
La
hasattr
este folosit pentru că în funcție de scopul chem funcții, există unele butoane radio care va fi creat înainte de celălalt, așa că nu ar putea exista.Asta este o opțiune am în vedere, dar e dezactivarea radiobutton grup în loc de a schimba starea lor (nu ceea ce prefer eu).