无法在PyQt5中关闭我的GUI应用程序>>

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

好,我有一个名为“ hello”]的按钮,我希望它做两件事。

首先:打开另一个名为]的文件> D_scraper,其次:关闭主应用程序。

实际发生的是,当D_scraper在此过程中结束运行后,应用程序将运行并冻结,然后再次开始工作。

我认为D_scraper在后台运行,并且主应用程序等待其完成,并且由于其冻结...

这是我的代码:

from PySide2 import QtCore, QtWidgets, QtWebEngineWidgets, QtWebChannel, QtGui
from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout, QSizeGrip, QGridLayout

from D_scraper import to_do     # importing the function `to_do()` from the other file...

def run_myscript(self):
    to_do()

class Form(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)

        self.btn = QtWidgets.QPushButton(self)
        self.btn.move(10,6)
        self.btn.setFixedSize(50, 50)

        self.btn.setText("Hello")
        self.btn.clicked.connect(run_myscript)   # here is the button clicked event.

[当我单击hello按钮时,请使其关闭,同时使其随后运行名为D_scraper的其他脚本,而没有任何冻结问题...

好吧,我有一个名为“ hello”的按钮,我希望它做两件事。首先:打开另一个名为D_scraper的文件,其次:关闭主应用程序。实际发生的是...

PyQt docs

void QCoreApplication :: exit(int returnCode = 0)告诉应用程序退出并返回代码。

调用此函数后,应用程序离开主事件循环,并从调用返回exec()。 exec()函数返回returnCode。如果事件循环未运行,则此功能不执行任何操作。

按照惯例,returnCode为0表示成功,并且任何非零值都表示错误。

始终使用QueuedConnection将信号连接到此插槽是一个好习惯。如果在控制进入主事件循环之前(例如在“ int main”调用exec()之前)发出了连接到该插槽的信号(未排队),则该插槽无效,并且应用程序永不退出。使用排队连接可确保直到控制进入主事件循环后才调用该插槽。

请注意,与同名的C库函数不同,此函数确实会返回给调用者-事件处理停止。

另请参见quit()和exec()。

python python-3.x pyqt pyqt5 pyside2
1个回答
1
投票
© www.soinside.com 2019 - 2024. All rights reserved.