Как сгенерировать сигнал подтверждения для dialog.exec в PyQt5 - PullRequest
0 голосов
/ 24 октября 2019

В main.py

returnCode = self.rouDialogForm.exec_()
if returnCode == QtWidgets.QDialog.Accepted:
    print(float(self.rouDialogForm.ui.leStartMhz.text()))

if returnCode ==QtWidgets.QDialog.Rejected:
    print(float(self.rouDialogForm.ui.leStopMhz.text()))

В rouDialog.py

def setupUi(self, Dialog):
    #GUI CODE
    self.retranslateUi(Dialog)
    QtCore.QMetaObject.connectSlotsByName(Dialog)
    self.butConnect.clicked.connect(self.acceptDialog)

def acceptDialog(self):
    self.accept()

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        #Label set texts are here
        import myResources_rc

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

Я пробовал другой синтаксис и другой импорт, чтобы заставить его работать.

попытка №1: вrouDialog.py вместо self.accept ()

self.done(QtWidgets.QDialog.Accepted)

другая попытка: в rouDialog.py вместо self.accept ()

super(Ui_Dialog,self).accept()

другая:

QtWidgets.QDialog.accept(self)

1 Ответ

0 голосов
/ 24 октября 2019

решено: добавление этого в мой rouDialog.py решило все мои проблемы. Надеюсь, это поможет кому-то еще в будущем.

    self.butReadout.clicked.connect(Dialog.accept)

    @QtCore.pyqtSlot()
    def accept(self):
        pass

Редактировать: я не могу пометить свой ответ как правильный, так как мне нужнождать 2 дня.

...