Mám 2 radiobuttons vytvořil (uvnitř třídy QMainWindow), jako je:
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
Chci, aby bylo možné vybrat complex
možnost dtype radiobuttons skupina a tensorflow
radiobutton knihovny radiobuttons. Takže 3 ze 4 možných kombinací. Takže když jsem si vybrat complex
a knihovna byla tensorflow
Chci, aby se automaticky změnit knihovny cvnn
. Snažil jsem se realizovat to, jako toto:
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á věc je, že to vlastně funguje v tom smyslu, že, například, pokud jsem na complex
aktivuje a zvolte tensorflow
, radiobutton změny real
(to, co chci!) ale tensorflow
není vybrán! Potřebuju vybrat to znovu, jako by se dělat self.real_dtype_rb.setChecked(True)
zruší výběr radiobutton jsem kliknul na. (Velmi divné, pokud se zeptáte mě).
Na
hasattr
je použit, protože v závislosti na pořadí, zavolám funkce, tam jsou některé radiobuttons, který bude vytvořen před ostatní, takže to nemusí existovat.To je možnost zvažuji, ale to je zakázání radiobutton skupina namísto změny jejich stavu (ne to, co mám nejraději).