Второе окно Pyside2 (QDialog) закрывает главное - PullRequest
0 голосов
/ 06 января 2019
import sys

from PySide2.QtCore import QFile
from PySide2.QtWidgets import QApplication, QMainWindow
from PySide2.QtUiTools import QUiLoader


class MyMainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        loader = QUiLoader()
        self.ui = loader.load("mainWindow.ui", self)

        self.ui.pushButton_call_dialog.clicked.connect(self.call_dialog)
        self.ui.close()

        self.ui.show()


    def call_dialog(self):
        loader = QUiLoader()
        self.dialog = loader.load("dialog.ui")

        self.dialog.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    window = MyMainWindow()
    window.show
    sys.exit(app.exec_())

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

Процесс завершен с кодом выхода 0

Спасибо за вашу помощь

1 Ответ

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

Вы можете обработать свой QDialog в отдельном классе, а затем заставить их взаимодействовать только, структура может немного измениться, но вы можете увидеть, является ли это жизнеспособным ответом:

import sys
from PySide2.QtWidgets import *

class MyWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        button = QPushButton("Dialog")
        button.clicked.connect(self.open_dialog)
        self.setCentralWidget(button)

    def open_dialog(self):
        dialog = MyDialog()
        dialog.show()
        dialog.exec_()


class MyDialog(QDialog):
    def __init__(self):
        QDialog.__init__(self)

        button = QPushButton("Close")
        button.clicked.connect(self.close_dialog)

        layout = QHBoxLayout()
        layout.addWidget(button)
        self.setLayout(layout)

    def close_dialog(self):
        self.close()

if __name__ == "__main__":
    app = QApplication()
    m = MyWindow()
    m.show()
    sys.exit(app.exec_())

Просто обратите внимание, что вы должны включить шаг setUp в каждом классе. Надеюсь, это поможет.

...