PyQt4:具有autoexclusive属性的QWidget子类中的QRadioButton

时间:2015-07-06 22:23:40

标签: python user-interface pyqt

我在使用PyQt4的Python应用程序中创建了一个名为QWidget的{​​{1}}子类,它由RadioSpinButton旁边的QRadioButton组成。我在水平布局中使用了QSpinBox的实例,其中包含两个RadioSpinButton个实例。新类中的QRadioButton与其他两个QRadioButtons具有相同的父级,但其autoExclusive属性不起作用。我怎样才能解决这个问题?我只需要一个按钮,但我有这个:

enter image description here

enter image description here

代码

QRadioButton

这是设计from PyQt4 import QtCore, QtGui class NewProject(QtGui.QWizard): def __init__(self, parent=None): super(NewProject, self).__init__(parent) # Iniciando páginas self.init_filepage() # Tamaño mínimo de la ventana #self.setMinimumSize(800, 600) # Título self.setWindowTitle(self.tr('Nuevo Proyecto')) def init_filepage(self): # Página para selección de imágenes self.addPage(FilesPage(self)) class FilesPage(QtGui.QWizardPage): def __init__(self, parent=None): super(FilesPage, self).__init__(parent) # Título de la página self.setTitle(self.tr('Imagen')) self.setSubTitle(self.tr('Seleccione la escena alrededor de la cual se construirá el proyecto.')) #self.setPixmap(QtGui.QWizard.LogoPixmap, QtGui.QPixmap(":/app-icon.svg").scaledToHeight(48)) # Elementos # Tipo de imagen según la cantidad de bandas imgtype = QtGui.QGroupBox(self.tr('Tipo de imagen (cantidad de bandas):')) imgtypelayout = QtGui.QHBoxLayout() imgPANtype = QtGui.QRadioButton(self.tr('PAN (1 banda)'), self) imgtypelayout.addWidget(imgPANtype) imgMSStype = QtGui.QRadioButton(self.tr('MSS (4 bandas)'), self) imgtypelayout.addWidget(imgMSStype) imgVartype = RadioSpinButton(self.tr('Variable'), self) imgtypelayout.addWidget(imgVartype) imgtype.setLayout(imgtypelayout) # Disposición principal layout = QtGui.QVBoxLayout() layout.addWidget(imgtype) self.setLayout(layout) class RadioSpinButton(QtGui.QWidget): def __init__(self, text, parent=None): super(RadioSpinButton, self).__init__(parent) # Radiobutton self.button = QtGui.QRadioButton(text, parent) self.button.toggled.connect(self.change_spinbox) # Spinbox self.spinbox = QtGui.QSpinBox() self.spinbox.setEnabled(False) # Disposición layout = QtGui.QHBoxLayout() layout.addWidget(self.button) layout.addWidget(self.spinbox) self.setLayout(layout) @QtCore.pyqtSlot() def change_spinbox(self): self.spinbox.setEnabled(not self.spinbox.isEnabled()) 子类的正确方法吗?

1 个答案:

答案 0 :(得分:0)

由于您的所有QRadioButton都没有相同的直接父窗口小部件,我相信您将需要使用QButtonGroup:http://doc.qt.io/qt-4.8/qbuttongroup.html