2 Radyo düğmesi oluşturdum (bir QMainWindow sınıfının içinde) :
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
Ben imkansız seçmek için yapmak istiyorum complex
dtype radiobuttons grubunun seçeneği ve tensorflow
kütüphane radiobuttons list. 4 Olası kombinasyondan 3'ünü bırakmak. Yani eğer seçersem complex
ve kütüphane tensorflow
, Kütüphaneyi otomatik olarak değiştirmek istiyorum cvnn
. Bunu şu şekilde uygulamaya çalıştım:
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.
Garip olan şu ki, aslında, örneğin, eğer açıksam complex
etkinleştirildi ve seç tensorflow
, radiobutton için değiştirir real
(ne istiyorum!) ama tensorflow
seçilemiyor! Sanki yapıyormuş gibi tekrar seçmem gerekiyor. self.real_dtype_rb.setChecked(True)
tıklattığım radyo düğmesinin seçimini iptal eder. (Bana sorarsan çok garip).
Bu
hasattr
kullanılır çünkü siparişe bağlı olarak fonksiyonlar, daha önce oluşturulacak bazı radyo düğmeleri vardır diğeri, yani var olmayabilir.Bu düşündüğüm bir seçenek ama radyo düğmesini devre dışı bırakıyor durumlarını değiştirmek yerine gruplandırın (tercih ettiğim şey değil).