Найти - Пользователи
Полная версия: QtWidgets.QInputDialog и Radiobutton
Начало » GUI » QtWidgets.QInputDialog и Radiobutton
1
Pacifist
Подскажите, есть в QtWidgets.QInputDialog метод, что бы вызвать диалоговое окно с радио кнопками как по аналогии с выпадающим списком в примере?
 from PyQt5 import QtCore, QtGui, QtWidgets
import sys
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(517, 227)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.toolButton = QtWidgets.QToolButton(self.centralwidget)
        self.toolButton.setGeometry(QtCore.QRect(80, 30, 25, 19))
        self.toolButton.setObjectName("toolButton")
        self.toolButton_2 = QtWidgets.QToolButton(self.centralwidget)
        self.toolButton_2.setGeometry(QtCore.QRect(80, 100, 25, 19))
        self.toolButton_2.setObjectName("toolButton_2")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(160, 40, 47, 13))
        self.label.setStyleSheet("background-color: rgb(170, 255, 127);")
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(150, 100, 47, 13))
        self.label_2.setStyleSheet("background-color: rgb(255, 255, 127);")
        self.label_2.setObjectName("label_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.toolButton.setText(_translate("MainWindow", "..."))
        self.toolButton_2.setText(_translate("MainWindow", "..."))
        self.label.setText(_translate("MainWindow", "TextLabel"))
        self.label_2.setText(_translate("MainWindow", "TextLabel"))
class Proba(QtWidgets.QMainWindow):
    def __init__(self):
        super(Proba, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.toolButton.clicked.connect(self.setItem)
    def setItem(self):
        items = {"Spring", "Summer", "Fall", "Winter"}
        item, ok = QtWidgets.QInputDialog.getItem(self, "QInputDialog.getItem()",
                "Season:", items, 0, False)
        if ok and item:
            self.ui.label.setText(str(item))
app = QtWidgets.QApplication([])
application = Proba()
application.show()
sys.exit(app.exec())
DOOMer
QInputDialog поддерживает только простой текстовый ввод через QLineEdit и выбор из списка через QComboBox.

То что вы хотите, вполне несложно реализовать самому, отнаслодовавшись от класса QDialog.
Pacifist
DOOMer
QInputDialog поддерживает только простой текстовый ввод через QLineEdit и выбор из списка через QComboBox. То что вы хотите, вполне несложно реализовать самому, отнаслодовавшись от класса QDialog.
Спасибо! Подскажите, пожалуйста, как из второго окна (класс Proba_2 функция ok_butt) передать значение (в моем случае переменная ss) в первое окно (класс Proba, label_2) по нажатию кнопки Ок во втором окне с его закрытием?
 from PyQt5 import QtCore, QtGui, QtWidgets
import sys
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(517, 227)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.toolButton = QtWidgets.QToolButton(self.centralwidget)
        self.toolButton.setGeometry(QtCore.QRect(80, 30, 25, 19))
        self.toolButton.setObjectName("toolButton")
        self.toolButton_2 = QtWidgets.QToolButton(self.centralwidget)
        self.toolButton_2.setGeometry(QtCore.QRect(80, 100, 25, 19))
        self.toolButton_2.setObjectName("toolButton_2")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(160, 40, 120, 13))
        self.label.setStyleSheet("background-color: rgb(170, 255, 127);")
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(150, 100, 120, 13))
        self.label_2.setStyleSheet("background-color: rgb(255, 255, 127);")
        self.label_2.setObjectName("label_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.toolButton.setText(_translate("MainWindow", "..."))
        self.toolButton_2.setText(_translate("MainWindow", "..."))
        self.label.setText(_translate("MainWindow", "Выпадающий список"))
        self.label_2.setText(_translate("MainWindow", "Радио кнопки"))
class Ui_MainWindow_2(object):
    def setupUi_2(self, MainWindow_2):
        MainWindow_2.setObjectName("MainWindow_2")
        MainWindow_2.resize(400, 250)
        self.centralwidget_1 = QtWidgets.QWidget(MainWindow_2)
        self.centralwidget_1.setObjectName("centralwidget")
        self.radioButton = QtWidgets.QRadioButton(self.centralwidget_1)
        self.radioButton.setGeometry(QtCore.QRect(90, 80, 82, 17))
        self.radioButton.setObjectName("radioButton")
        self.radioButton_2 = QtWidgets.QRadioButton(self.centralwidget_1)
        self.radioButton_2.setGeometry(QtCore.QRect(90, 110, 82, 17))
        self.radioButton_2.setObjectName("radioButton_2")
        self.radioButton_3 = QtWidgets.QRadioButton(self.centralwidget_1)
        self.radioButton_3.setGeometry(QtCore.QRect(90, 150, 82, 17))
        self.radioButton_3.setObjectName("radioButton_3")
        self.radioButton_4 = QtWidgets.QRadioButton(self.centralwidget_1)
        self.radioButton_4.setGeometry(QtCore.QRect(90, 190, 82, 17))
        self.radioButton_4.setObjectName("radioButton_4")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget_1)
        self.pushButton.setGeometry(QtCore.QRect(150, 120, 75, 23))
        self.pushButton.setObjectName("ок")
        self.label = QtWidgets.QLabel(self.centralwidget_1)
        self.label.setGeometry(QtCore.QRect(150, 70, 61, 16))
        self.label.setStyleSheet("background-color: rgb(170, 255, 127);")
        MainWindow_2.setCentralWidget(self.centralwidget_1)
        self.statusbar = QtWidgets.QStatusBar(MainWindow_2)
        self.statusbar.setObjectName("statusbar")
        MainWindow_2.setStatusBar(self.statusbar)
        self.retranslateUi(MainWindow_2)
        QtCore.QMetaObject.connectSlotsByName(MainWindow_2)
    def retranslateUi(self, MainWindow_2):
        _translate = QtCore.QCoreApplication.translate
        MainWindow_2.setWindowTitle(_translate("MainWindow_2", "MainWindow"))
        self.radioButton.setText(_translate("MainWindow_2", "1"))
        self.radioButton_2.setText(_translate("MainWindow_2", "2"))
        self.radioButton_3.setText(_translate("MainWindow_2", "3"))
        self.radioButton_4.setText(_translate("MainWindow_2", "4"))
        self.pushButton.setText(_translate("MainWindow_2", "ok"))
class Proba(QtWidgets.QMainWindow):
    def __init__(self):
        super(Proba, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.toolButton.clicked.connect(self.setItem)
        self.ui.toolButton_2.clicked.connect(self.setItem_2)
    def setItem(self):
        items = {"Spring", "Summer", "Fall", "Winter"}
        item, ok = QtWidgets.QInputDialog.getItem(self, "QInputDialog.getItem()",
                                                  "Season:", items, 0, False)
        if ok and item:
            self.ui.label.setText(str(item))
    def setItem_2(self):
        self.application_2 = Proba_2()
        self.application_2.show()
class Proba_2(QtWidgets.QMainWindow):
    def __init__(self):
        super(Proba_2, self).__init__()
        self.ui_2 = Ui_MainWindow_2()
        self.ui_2.setupUi_2(self)
        self.ui_2.radioButton.toggled.connect(self.updateLabel)
        self.ui_2.radioButton_2.toggled.connect(self.updateLabel)
        self.ui_2.radioButton_3.toggled.connect(self.updateLabel)
        self.ui_2.radioButton_4.toggled.connect(self.updateLabel)
        self.ui_2.pushButton.clicked.connect(self.ok_butt)
    def updateLabel(self):
        global ss
        rbtn = self.sender()
        if rbtn.isChecked():
            if rbtn.text() == '1':
                self.ui_2.label.setText('Один')
                ss = 'Один'
            elif rbtn.text() == '2':
                self.ui_2.label.setText('Два')
                ss = 'Два'
            elif rbtn.text() == '3':
                self.ui_2.label.setText('Три')
                ss = 'Три'
            elif rbtn.text() == '4':
                self.ui_2.label.setText('Четыре')
                ss = 'Четыре'
        return ss
    def ok_butt(self):
        print(ss)
app = QtWidgets.QApplication([])
application = Proba()
application.show()
sys.exit(app.exec())
Pacifist
вот так вроде должно бы работать, но нет
     def ok_butt(self):
        self.aa = Proba()
        self.aa.ui.label_2.setText(ss)
        self.close()
        print(ss)
FishHook
Pacifist
вот так вроде должно бы работать
Да как же оно будет работать? Вы создали объект класса Proba, установили ему какие-то свойства, но ведь это не тот объект, который вы создали ранее application = Proba(). Вам надо при создании объекта Proba_2 передать ему в конструктор объект application, сохранить его в свойстве и уже дальше работать с этим свойством.
DOOMer
Pacifist
Подскажите, пожалуйста, как из второго окна (класс Proba_2 функция ok_butt) передать значение (в моем случае переменная ss) в первое окно (класс Proba, label_2) по нажатию кнопки Ок во втором окне с его закрытием?
1. Диалог с радио-кнопками у вас наследуется от QMainWindow - в принципе так можно, но лучше его наследовать от класса QDialog, который предназначен именно для создания разного рода диалогов. Делать все окна “главными”, не лучшая практика. Соответственно вот так будет выглядеть ваш класс UI для диалога:

 class Ui_Dialog_2(object):
    def setupUi_2(self, Dialog2):
        Dialog2.setObjectName("MainWindow_2")
        Dialog2.resize(400, 250)
        self.centralwidget_1 = QtWidgets.QWidget(Dialog2)
        self.centralwidget_1.setObjectName("centralwidget")
        self.radioButton = QtWidgets.QRadioButton(self.centralwidget_1)
        self.radioButton.setGeometry(QtCore.QRect(90, 80, 82, 17))
        self.radioButton.setObjectName("radioButton")
        self.radioButton_2 = QtWidgets.QRadioButton(self.centralwidget_1)
        self.radioButton_2.setGeometry(QtCore.QRect(90, 110, 82, 17))
        self.radioButton_2.setObjectName("radioButton_2")
        self.radioButton_3 = QtWidgets.QRadioButton(self.centralwidget_1)
        self.radioButton_3.setGeometry(QtCore.QRect(90, 150, 82, 17))
        self.radioButton_3.setObjectName("radioButton_3")
        self.radioButton_4 = QtWidgets.QRadioButton(self.centralwidget_1)
        self.radioButton_4.setGeometry(QtCore.QRect(90, 190, 82, 17))
        self.radioButton_4.setObjectName("radioButton_4")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget_1)
        self.pushButton.setGeometry(QtCore.QRect(150, 120, 75, 23))
        self.pushButton.setObjectName("ок")
        self.label = QtWidgets.QLabel(self.centralwidget_1)
        self.label.setGeometry(QtCore.QRect(150, 70, 61, 16))
        self.label.setStyleSheet("background-color: rgb(170, 255, 127);")
        # MainWindow_2.setCentralWidget(self.centralwidget_1)
        self.statusbar = QtWidgets.QStatusBar(Dialog2)
        self.statusbar.setObjectName("statusbar")
        # Dialog2.setStatusBar(self.statusbar)
        self.retranslateUi(Dialog2)
        QtCore.QMetaObject.connectSlotsByName(Dialog2)
    def retranslateUi(self, MainWindow_2):
        _translate = QtCore.QCoreApplication.translate
        MainWindow_2.setWindowTitle(_translate("MainWindow_2", "MainWindow"))
        self.radioButton.setText(_translate("MainWindow_2", "1"))
        self.radioButton_2.setText(_translate("MainWindow_2", "2"))
        self.radioButton_3.setText(_translate("MainWindow_2", "3"))
        self.radioButton_4.setText(_translate("MainWindow_2", "4"))
        self.pushButton.setText(_translate("MainWindow_2", "ok"))

2. В метод def __init__(self) класса Proba2 добавьте переменную для хранения результата выбора радиокнопки (и используй её вменсто глобальной переменной ss, которая у тебя в методе updateLabel).

 self.ss = None

2. У класса QDialog (и его наследников) имеются встроенные методы accept() и reject(), которые используются для возвращения результат Accepted (зменения принияты успешно) и Rejected (изменения не принимаем). Отображем диалог с помощью вызова метода exec(), который как раз и вернёт значение QDailog.Accepted или QDialog.Rejected в зависимости от того закрываем мы диалог свызовом метода accept() или reject(). Ну и в зависимости от того какое значение вернулось, можно дергать те или иные свойства и метода созданного диалога.

Собственно вот пример вашего кода, переработанного с использованием QDialog для класса Proba_2 (старый неиспользуемый код закомментирован)

 class Proba(QtWidgets.QMainWindow):
    def __init__(self):
        super(Proba, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.toolButton.clicked.connect(self.setItem)
        self.ui.toolButton_2.clicked.connect(self.setItem_2)
    def setItem(self):
        items = {"Spring", "Summer", "Fall", "Winter"}
        item, ok = QtWidgets.QInputDialog.getItem(self, "QInputDialog.getItem()",
                                                  "Season:", items, 0, False)
        if ok and item:
            self.ui.label.setText(str(item))
    def setItem_2(self):
        self.application_2 = Proba_2()
        # self.application_2.show()
        result = self.application_2.exec()
        if result == QtWidgets.QDialog.Accepted and self.application_2.ss is not None:
            print(self.application_2.ss)
            self.ui.label_2.setText(self.application_2.ss)
# class Proba_2(QtWidgets.QMainWindow):
class Proba_2(QtWidgets.QDialog):
    def __init__(self):
        super(Proba_2, self).__init__()
        self.ui_2 = Ui_Dialog_2()
        self.ui_2.setupUi_2(self)
        self.ui_2.radioButton.toggled.connect(self.updateLabel)
        self.ui_2.radioButton_2.toggled.connect(self.updateLabel)
        self.ui_2.radioButton_3.toggled.connect(self.updateLabel)
        self.ui_2.radioButton_4.toggled.connect(self.updateLabel)
        # self.ui_2.pushButton.clicked.connect(self.ok_butt)
        self.ui_2.pushButton.clicked.connect(self.accept)
        self.ss = None
    def updateLabel(self):
        # global ss
        rbtn = self.sender()
        if rbtn.isChecked():
            if rbtn.text() == '1':
                self.ui_2.label.setText('Один')
                self.ss = 'Один'
            elif rbtn.text() == '2':
                self.ui_2.label.setText('Два')
                self.ss = 'Два'
            elif rbtn.text() == '3':
                self.ui_2.label.setText('Три')
                self.ss = 'Три'
            elif rbtn.text() == '4':
                self.ui_2.label.setText('Четыре')
                self.ss = 'Четыре'
    # def ok_butt(self) -> (str, bool):
    #     print(self.ss)

Pacifist
Подскажите, пожалуйста, на что влияет указание класса Proba и self в функции super? В каких-то примерах, класс указывается, в каких-то нет
 super(Proba_2, self).__init__()
FishHook
это для совместимости со вторым питоном
синтаксис без self работает только в третьем, во втором self должен присутствовать
Pacifist
Есть еще вопрос: вывел выпадающий список из QtWidgets.QInputDialog в отдельное окно диалога (мне сложно в QInputDialog настроить стиль). При открытии диалогового окна с выпадающим списком в comboBox сразу стоит значение (Spring), но оно не передается по нажатию Ок (нужно выбрать что-то иное, потом Spring). Можно сделать, что бы сразу можно было выбрать первое (дефолтное) значение, не раскрывая список?
 from PyQt5 import QtCore, QtGui, QtWidgets
import sys
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(517, 227)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.toolButton = QtWidgets.QToolButton(self.centralwidget)
        self.toolButton.setGeometry(QtCore.QRect(80, 30, 25, 19))
        self.toolButton.setObjectName("toolButton")
        self.toolButton_2 = QtWidgets.QToolButton(self.centralwidget)
        self.toolButton_2.setGeometry(QtCore.QRect(80, 100, 25, 19))
        self.toolButton_2.setObjectName("toolButton_2")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(160, 40, 120, 13))
        self.label.setStyleSheet("background-color: rgb(170, 255, 127);")
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(150, 100, 120, 13))
        self.label_2.setStyleSheet("background-color: rgb(255, 255, 127);")
        self.label_2.setObjectName("label_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.toolButton.setText(_translate("MainWindow", "..."))
        self.toolButton_2.setText(_translate("MainWindow", "..."))
        self.label.setText(_translate("MainWindow", "Выпадающий список"))
        self.label_2.setText(_translate("MainWindow", "Радио кнопки"))
class Ui_Dialog_1(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(400, 300)
        self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
        self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32))
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel | QtWidgets.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.comboBox = QtWidgets.QComboBox(Dialog)
        self.comboBox.setGeometry(QtCore.QRect(60, 70, 221, 22))
        self.comboBox.setObjectName("comboBox")
        self.retranslateUi(Dialog)
        self.buttonBox.accepted.connect(Dialog.accept)
        self.buttonBox.rejected.connect(Dialog.reject)
        QtCore.QMetaObject.connectSlotsByName(Dialog)
    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
class Ui_Dialog_2(object):
    def setupUi_2(self, Dialog2):
        Dialog2.setObjectName("MainWindow_2")
        Dialog2.resize(400, 250)
        self.centralwidget_1 = QtWidgets.QWidget(Dialog2)
        self.centralwidget_1.setObjectName("centralwidget")
        self.radioButton = QtWidgets.QRadioButton(self.centralwidget_1)
        self.radioButton.setGeometry(QtCore.QRect(90, 80, 82, 17))
        self.radioButton.setObjectName("radioButton")
        self.radioButton_2 = QtWidgets.QRadioButton(self.centralwidget_1)
        self.radioButton_2.setGeometry(QtCore.QRect(90, 110, 82, 17))
        self.radioButton_2.setObjectName("radioButton_2")
        self.radioButton_3 = QtWidgets.QRadioButton(self.centralwidget_1)
        self.radioButton_3.setGeometry(QtCore.QRect(90, 150, 82, 17))
        self.radioButton_3.setObjectName("radioButton_3")
        self.radioButton_4 = QtWidgets.QRadioButton(self.centralwidget_1)
        self.radioButton_4.setGeometry(QtCore.QRect(90, 190, 82, 17))
        self.radioButton_4.setObjectName("radioButton_4")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget_1)
        self.pushButton.setGeometry(QtCore.QRect(150, 120, 75, 23))
        self.pushButton.setObjectName("ок")
        self.label = QtWidgets.QLabel(self.centralwidget_1)
        self.label.setGeometry(QtCore.QRect(150, 70, 61, 16))
        self.label.setStyleSheet("background-color: rgb(170, 255, 127);")
        # MainWindow_2.setCentralWidget(self.centralwidget_1)
        self.statusbar = QtWidgets.QStatusBar(Dialog2)
        self.statusbar.setObjectName("statusbar")
        # Dialog2.setStatusBar(self.statusbar)
        self.retranslateUi(Dialog2)
        QtCore.QMetaObject.connectSlotsByName(Dialog2)
    def retranslateUi(self, Ui_Dialog_2):
        _translate = QtCore.QCoreApplication.translate
        Ui_Dialog_2.setWindowTitle(_translate("MainWindow_2", "MainWindow"))
        self.radioButton.setText(_translate("MainWindow_2", "1"))
        self.radioButton_2.setText(_translate("MainWindow_2", "2"))
        self.radioButton_3.setText(_translate("MainWindow_2", "3"))
        self.radioButton_4.setText(_translate("MainWindow_2", "4"))
        self.pushButton.setText(_translate("MainWindow_2", "ok"))
class Proba(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.toolButton.clicked.connect(self.setItem)
        self.ui.toolButton_2.clicked.connect(self.setItem_2)
    def setItem(self):
        self.application_1 = Proba_1()
        result = self.application_1.exec()
        if result == QtWidgets.QDialog.Accepted:
            self.ui.label.setText(str(self.application_1.zdan))
    def setItem_2(self):
        self.application_2 = Proba_2()
        result = self.application_2.exec()
        if result == QtWidgets.QDialog.Accepted and self.application_2.ss is not None:
            print(self.application_2.ss)
            self.ui.label_2.setText(self.application_2.ss)
class Proba_1(QtWidgets.QDialog):
    def __init__(self):
        super().__init__()
        self.ui_2 = Ui_Dialog_1()
        self.ui_2.setupUi(self)
        self.ui_2.comboBox.addItems(["Spring", "Summer", "Fall", "Winter"])
        self.ui_2.comboBox.currentIndexChanged[str].connect(self.vyb_zdan)
        self.ui_2.buttonBox.clicked.connect(self.accept)
        self.zdan = None
    def vyb_zdan(self, item):
        self.zdan = item
class Proba_2(QtWidgets.QDialog):
    def __init__(self):
        super(Proba_2, self).__init__()
        self.ui_2 = Ui_Dialog_2()
        self.ui_2.setupUi_2(self)
        self.ui_2.radioButton.toggled.connect(self.updateLabel)
        self.ui_2.radioButton_2.toggled.connect(self.updateLabel)
        self.ui_2.radioButton_3.toggled.connect(self.updateLabel)
        self.ui_2.radioButton_4.toggled.connect(self.updateLabel)
        # self.ui_2.pushButton.clicked.connect(self.ok_butt)
        self.ui_2.pushButton.clicked.connect(self.accept)
        self.ss = None
    def updateLabel(self):
        # global ss
        # ss = 'Значение не введено'
        rbtn = self.sender()
        if rbtn.isChecked():
            if rbtn.text() == '1':
                self.ui_2.label.setText('Один')
                self.ss = 'Один'
            elif rbtn.text() == '2':
                self.ui_2.label.setText('Два')
                self.ss = 'Два'
            elif rbtn.text() == '3':
                self.ui_2.label.setText('Три')
                self.ss = 'Три'
            elif rbtn.text() == '4':
                self.ui_2.label.setText('Четыре')
                self.ss = 'Четыре'
app = QtWidgets.QApplication([])
application = Proba()
application.show()
sys.exit(app.exec())
DOOMer
В методе __init__ у диалога
 self.zdan = None
а значение свойства currentIndex у QComboBox выставляется в 0 автоматом выбирается энудевой элемент, без генерации сигнала об изменении текущего индекса и соотвественно вызовал слота.

Присвойте сразу переменной
 self.zdan
нужное значние в методе инициализации диалога, совпадающее с текстом нужного )нулевого) элемента списка - и всё.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB