Можно отключить одну радиокнопку в групповом поле. - PullRequest
0 голосов
/ 22 января 2019

Я пытался искать соответствующие темы, но я не смог найти ни одной, поэтому я здесь.Я создал приложение на Python и PyQt4, где я могу импортировать некоторые данные из файла.Во время импорта я динамически создаю несколько групповых блоков и радиокнопок в них, чтобы пользователь мог отобразить нужные данные.Может случиться так, что из-за собранных данных в групповом блоке будет только одна радиокнопка.

Проблема в том, что когда пользователь нажимает на эту уже выбранную единственную радиокнопку, она отменяется (черная точка в середине отсутствует).Еще раз щелкнув по нему, выберите его снова ...

Это ошибка или я должен установить свойство, чтобы такое поведение не происходило (имеется в виду, что кнопка никогда не отменяется, потому что она одна в окне группы)?

Как я могу предотвратить это поведение?

Пример (добавлено)

import sys
from PyQt4 import QtCore, QtGui

class MyApp(QtGui.QMainWindow):
    def __init__(self):
        super(MyApp, self).__init__()
        self.resize(289, 171)
        self.centralwidget = QtGui.QWidget(self)
        self.setCentralWidget(self.centralwidget)
        self.gridLayout = QtGui.QGridLayout(self.centralwidget)
        self.groupBox = QtGui.QGroupBox(self.centralwidget)
        self.groupBox.setGeometry(QtCore.QRect(0, 0, 100, 100))
        self.groupBox.setTitle("GroupBox")
        self.gridLayout.addWidget(self.groupBox, 0, 0, 1, 1)
        self.radioButton = QtGui.QRadioButton(self.groupBox)
        self.radioButton.setGeometry(QtCore.QRect(20, 60, 82, 17))
        self.radioButton.setChecked(True)
        self.radioButton.setAutoExclusive(True)
        self.radioButton.setText("RadioButton")
        self.gridLayoutRb = QtGui.QGridLayout(self.groupBox)
        self.gridLayoutRb.addWidget(self.radioButton, 0,0,1,1)
        self.show()

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    app.setStyle(QtGui.QStyleFactory.create('cleanlooks'))
    window = MyApp()
    out_msg = app.exec_()
    sys.exit(out_msg)

1 Ответ

0 голосов
/ 23 января 2019

Как предположил @ekhumoro, можно отключить радиокнопку, потому что есть только одна кнопка. Недостатком является то, что кнопка и ее текст серого цвета. Если это не проблема, тогда это решение.

Другим способом является постоянное добавление радионавигации в groupBox, а затем установка его координат (путем изменения его свойств на отрицательные значения), чтобы поместить его вне groupBox. Это только возможно, когда НЕ ИСПОЛЬЗУЯ ПЛАНЫ .

...