Радиокнопка Qt Python: активировать событие - PullRequest
3 голосов
/ 18 ноября 2009

Я разрабатываю проект для одного клиента, в дизайне которого есть радио-кнопка с эксклюзивными опциями.

Вот фрагмент кода, который запускается и показывает две симпатичные переключатели:

    self.performGroupBox = QtGui.QGroupBox(self.centralwidget)
    self.performGroupBox.setGeometry(QtCore.QRect(50, 20, 181, 121))
    self.performGroupBox.setObjectName("performGroupBox")     

    self.consultRadioButton = QtGui.QRadioButton(self.performGroupBox)
    self.consultRadioButton.setGeometry(QtCore.QRect(40, 30, 84, 18))
    self.consultRadioButton.setObjectName("consultRadioButton")

    self.insertRadioButton = QtGui.QRadioButton(self.performGroupBox)
    self.insertRadioButton.setGeometry(QtCore.QRect(40, 60, 84, 18))
    self.insertRadioButton.setObjectName("insertRadioButton")

это выглядит так:

perform:
    () Consult
    () Insert

Суть в том, как узнать, какой выбор был помечен: "consultRadioButton" или "insertRadioButton"?

Вот пример попытки получить эту информацию:

    if self.consultRadioButton.isChecked():
        self.call_Consult()
    if self.insertRadioButton.isChecked():
        self.call_Insert()

Но он ничего не сделал, когда выбрана радиокнопка.

В противном случае использование connect должно быть другим вариантом:

    QtCore.QObject.connect(self.consultRadioButton, QtCore.SIGNAL("currentIndexChanged(QString)"), self.call_Consult)  
    QtCore.QObject.connect(self.insertRadioButton, QtCore.SIGNAL("currentIndexChanged(QString)"), self.call_Insert) 

Но это тоже не сработало.

Чего здесь не хватает ... Есть предложения?

Все комментарии приветствуются и приветствуются.

Ответы [ 4 ]

10 голосов
/ 18 ноября 2009

Попробуйте этот сигнал вместо:

void toggled (bool)

https://doc.qt.io/qt-5/qabstractbutton.html#toggle

И пример использования: https://www.tutorialspoint.com/pyqt/pyqt_qradiobutton_widget.htm

1 голос
/ 19 ноября 2009

Вот решение ... сейчас работает:

QtCore.QObject.connect(self.radioButton1,QtCore.SIGNAL("toggled(bool)"),self.radio_activateInput)

когда параметр bool включен в переключаемый сигнал, он работает.

0 голосов
/ 28 ноября 2012
# Assuming 'self' is a QtGui object
self.consultRadioButton = QtGui.QRadioButton('Consult')
# I prefer layout managers, but that is another topic
self.consultRadioButton.setGeometry(QtCore.QRect(40, 30, 84, 18))
self.consultRadioButton.setObjectName("consultRadioButton")

self.insertRadioButton = QtGui.QRadioButton('Insert')
self.insertRadioButton.setGeometry(QtCore.QRect(40, 60, 84, 18))
self.insertRadioButton.setObjectName("insertRadioButton")

# Set Default
self.consultRadioButton.setChecked(True)

# Create a Group and make it exclusive
self.methodGrp.setExclusive(True)

# Add radio buttons to group
self.methodGrp.addButton(self.consultRadioButton)
self.methodGrp.addButton(self.insertRadioButton)

# Connect Event handlers
self.consultRadioButton.clicked.connect(self.callConsult)
self.insertRadioButton.clicked.connect(self.callInsert)
0 голосов
/ 20 декабря 2009

Посмотрите на класс QButtonGroup

...