PyQt - dane z okna dialogowego.

0

Witam,
Kto mi podpowie jak dostac sie do wprowadzonych danych w oknie dialogowym w pyqt5. Mam taki oto kod, pierwszy to dialog z designera a drugi to moje nieudolne proby zrozumienia jak to dziala

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'loginprompt.ui'
#
# Created by: PyQt5 UI code generator 5.8
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_DbAuthorization_Dialog(object):
    def setupUi(self, DbAuthorization_Dialog):
        DbAuthorization_Dialog.setObjectName("DbAuthorization_Dialog")
        DbAuthorization_Dialog.resize(368, 157)
        self.buttonBox = QtWidgets.QDialogButtonBox(DbAuthorization_Dialog)
        self.buttonBox.setGeometry(QtCore.QRect(10, 120, 341, 32))
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.UserName_le = QtWidgets.QLineEdit(DbAuthorization_Dialog)
        self.UserName_le.setGeometry(QtCore.QRect(170, 40, 181, 22))
        self.UserName_le.setObjectName("UserName_le")
        self.UserPass_le = QtWidgets.QLineEdit(DbAuthorization_Dialog)
        self.UserPass_le.setGeometry(QtCore.QRect(170, 70, 181, 22))
        self.UserPass_le.setEchoMode(QtWidgets.QLineEdit.Password)
        self.UserPass_le.setObjectName("UserPass_le")
        self.UserName_lbl = QtWidgets.QLabel(DbAuthorization_Dialog)
        self.UserName_lbl.setGeometry(QtCore.QRect(90, 40, 70, 16))
        self.UserName_lbl.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.UserName_lbl.setObjectName("UserName_lbl")
        self.UserPass_lbl = QtWidgets.QLabel(DbAuthorization_Dialog)
        self.UserPass_lbl.setGeometry(QtCore.QRect(90, 70, 71, 16))
        self.UserPass_lbl.setObjectName("UserPass_lbl")
        self.UserName_lbl.setBuddy(self.UserName_le)
        self.UserPass_lbl.setBuddy(self.UserPass_le)

        self.retranslateUi(DbAuthorization_Dialog)
        self.buttonBox.accepted.connect(DbAuthorization_Dialog.accept)
        self.buttonBox.rejected.connect(DbAuthorization_Dialog.reject)
        QtCore.QMetaObject.connectSlotsByName(DbAuthorization_Dialog)

    def retranslateUi(self, DbAuthorization_Dialog):
        _translate = QtCore.QCoreApplication.translate
        DbAuthorization_Dialog.setWindowTitle(_translate("DbAuthorization_Dialog", "Database authorization"))
        self.UserName_lbl.setText(_translate("DbAuthorization_Dialog", "User name:"))
        self.UserPass_lbl.setText(_translate("DbAuthorization_Dialog", "Password:"))
'''
Created on 01.04.2017

@author:
'''
from dbauthorization_dialog import Ui_DbAuthorization_Dialog as ui_dialog
import sys
from PyQt5.QtWidgets import QPushButton, QWidget, QApplication, QHBoxLayout, QDialog, QMessageBox

def btn1handler():
    ui = ui_dialog()
    dialog = QDialog()
    ui.setupUi(dialog)
    msg = QMessageBox()
    if (dialog.exec_() == QDialog.Accepted):
        msg.setText(str(dialog.UserName_le.text()))
    else:
        msg.setText('No')
    msg.exec_()
    

app = QApplication(sys.argv)
window= QWidget()
btn1 = QPushButton('1')
btn2 = QPushButton('2')
layout = QHBoxLayout()
layout.addWidget(btn1)


layout.addWidget(btn2)
window.setLayout(layout)
btn1.clicked.connect(btn1handler)
window.show()

sys.exit(app.exec_())

Niestety jak klikne na dialogu OK to program sie konczy i nie wiem jak to naprawic.
czyli problem jest tutaj:

    if (dialog.exec_() == QDialog.Accepted):
        msg.setText(str(dialog.UserName_le.text()))
    else:
        msg.setText('No')
    msg.exec_()

edit:

Powyższy problem jakoś udało mi się rozwiązać poprzez dziedziczenie z QDialog i dodanie do dziedziczącej klasy odpowiednich metod zwracających wartości z kontrolek niemniej zastanawiam się na kolejnym który nie do końca rozumiem aby nie powiedzieć, że w ogóle nie rozumiem ;-)

class MDialog(QDialog, ui_dialog):
    def __init__(self, parent=None):
        #QDialog.__init__(self, parent)
        super(MDialog, self).__init__(parent)
        self.setupUi(self)

jest jakaś różnica pomiędzy dwoma poniższymi wywołaniami?:

#QDialog.__init__(self, parent)
super(MDialog, self).__init__(parent)
0

Coś tu przepotwornie nakombinowałeś. Napisz przede wszystkim co takiego ta aplikacja ma robić :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1