PyQt - 当我转移到第三个窗口时系统崩溃

时间:2018-02-12 03:15:34

标签: python pyqt pyqt5

我是使用PyQt的初学者。我想用PyQt构建一个简单的系统,单击按钮可以转移到不同的窗口。但是当转移到第三个窗口时系统总是崩溃。并像这样返回错误

  

****处理完成,退出代码为-1073740791(0xC0000409)*****

我试图改变不同窗口的类型,使它们与之前的窗口不同(QDialog→QWidget QWidget→QDialog),但这种方法没有意义。

希望有人能帮我解决这个问题。

这是一个示例代码

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class FirstWindow(QWidget):

    close_signal = pyqtSignal()
    def __init__(self, parent=None):
        super(FirstWindow, self).__init__(parent)
        self.resize(100, 100)
        self.btn = QToolButton(self)
        self.btn.setText("click")

    def closeEvent(self, event):
        self.close_signal.emit()
        self.close()


class SecondWindow(QDialog):
    def __init__(self, parent=None):
        super(SecondWindow, self).__init__(parent)
        self.resize(150, 150)
        self.btn2 = QToolButton(self)
        self.btn2.setText("click")

class ThirdWindow(QDialog):
    def __init__(self, parent=None):
        super(SecondWindow, self).__init__(parent)
        self.resize(200, 200)
        self.setStyleSheet("background: red")

if __name__ == "__main__":
    App = QApplication(sys.argv)
    ex = FirstWindow()
    s = SecondWindow()

    ex.show()
    ex.btn.clicked.connect(s.show)
    s.btn2.clicked.connect(ThirdWindow.show)
    sys.exit(App.exec_())

1 个答案:

答案 0 :(得分:0)

你没有创建第三堂课的实例,请使用此调整:

App = QApplication(sys.argv)
first = FirstWindow()
second = SecondWindow()
third = ThirdWindow() # this line was added

first.show()
first.btn.clicked.connect(second.show)
second.btn2.clicked.connect(third.show)
sys.exit(App.exec_())

btw:您的handle_close永远不会被称为