Python的崩溃,当我尝试打开一个自定义的进口PyQt5窗口类

问题描述 投票:0回答:1

我有点菜鸟,当它与PyQt5涉及到Python中,更应如此。随着中说,我不知道如何使用我收到错误向前移动,我希望有人可以在这里给我一些智慧。

我想外部测试PyQt5窗口脚本文件连接到我的主界面结构。我做了一个简单的下拉菜单界面与应该运行外部脚本,将打开另一个窗口中的按钮。我试图用这个命令来执行它:test_dropButton.action.triggered.connect(testWindowButton)

我不断收到这似乎暗示,因为我得到这个错误了Python崩溃了一个有趣的错误:

Process finished with exit code -1073740791 (0xC0000409)从我的研究,这意味着我可以从试图调用不存在的功能,PyQt5无法正常抛出异常做一些事情。我不确定如果是因为我的自定义窗口脚本没有简单地调用窗口显示在屏幕上,但是我的init方法应该做的是,当类被称为函数,还是我只是偷懒,忘记我需要构造第一?

我也看到了这个错误作为一个线程问题的解释中试图运行一个外部脚本可能会导致的Python由于线程问题崩溃。也许我需要多线程外部python脚本?

无论哪种方式,能有人给我解释一下上面的错误,告诉我到底是怎么回事,为什么它可能崩溃?

这里是我的代码:

#This is a snippet of my main GUI structure

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon
import TrainHelloWorld as hi

 mainMenu = self.menuBar()
 trainMenu = mainMenu.addMenu('Test')

testWindowButton = hi.Greeting()

    test_dropButton = QAction('test', self)
    test_dropButton.setShortcut('Ctrl+T')
    test_dropButton.setStatusTip('Test the button')
    test_dropButton.action.triggered.connect(testWindowButton.show())
    trainMenu.addAction(test_dropButton)  # add test button to dropdown menu

这里是进口的脚本:

from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon
import sys


class Greeting(QMainWindow):
    def __init__(self):
        super().__init__()
        self.title = 'Dummy Hello'
        self.left = 10
        self.top = 10
        self.width = 640
        self.height = 400
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        greetingLabel = QLabel()

        greetingLabel.setText("You called a Python function in a QAction menu, YOU DID IT!")

        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Greeting()
    sys.exit(app.exec_())

我希望程序打开一个主窗口,一个下拉菜单标有“测试”一个按钮名称“测试”,运行打开另一个窗口导入的脚本一个菜单。

python exception-handling pyqt5 python-multithreading
1个回答
0
投票

试试吧:

卖弄.朋友

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon
import TrainHelloWorld as hi


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

        mainMenu  = self.menuBar()
        trainMenu = mainMenu.addMenu('Test')

        self.testWindowButton = hi.Greeting() 

        test_dropButton = QAction('test', self)
        test_dropButton.setShortcut('Ctrl+T')
        test_dropButton.setStatusTip('Test the button')

        # test_dropButton.action.triggered.connect(testWindowButton.show())
        #                 ------                                        --
        test_dropButton.triggered.connect(self.testWindowButton.show)  # - `.action`, - `()`
        trainMenu.addAction(test_dropButton)  # add test button to dropdown menu   


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyMainWindow()
    ex.show()
    sys.exit(app.exec_())  

train HelloWorld.朋友

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui     import QIcon

class Greeting(QMainWindow):
    def __init__(self):
        super().__init__()
        self.title = 'Dummy Hello'
        self.left   = 520
        self.top    = 280
        self.width  = 640
        self.height = 400
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        greetingLabel = QLabel(self)                    # + self
        greetingLabel.setGeometry(170, 200, 300, 50)    # +++
        greetingLabel.setText("You called a Python function in a QAction menu, YOU DID IT!")
# ---   self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Greeting()
    ex.show()
    sys.exit(app.exec_())

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.