Mám 2 radiobuttons vytvorené (vo vnútri QMainWindow triedy), ako napríklad:
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
Chcem, aby bolo možné vybrať complex
možnosť dtype radiobuttons skupiny a tensorflow
radiobutton knižnice radiobuttons. Opúšťa 3 zo 4 možných kombinácií. Takže ak som vyberte complex
a knižnica bola tensorflow
Som chcete automaticky zmeniť knižnice cvnn
. Snažil som sa, aby ho, ako je tento:
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.
Divný vec je, že to skutočne funguje v tom zmysle, že, napríklad, ak som na complex
aktívne a vyberte tensorflow
sa radiobutton zmeny real
(čo chcem!) ale tensorflow
nie si vybrali! Potrebujem ho vyberte opäť ako v prípade tvorby self.real_dtype_rb.setChecked(True)
zruší výber radiobutton som klikol na. (Veľmi zvláštne, ak sa spýtate mňa).
Na
hasattr
je používané, pretože v závislosti od toho, aby som volať funkcie, tam sú niektoré radiobuttons, že budú vytvorené pred ostatní, takže to nemusí existovať.Toto je možnosť uvažujem, ale je to vypnutie radiobutton skupina namiesto zmeny ich stavu (nie to, čo mám najradšej).