好,我有一个名为“ 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的文件,其次:关闭主应用程序。实际发生的是...
void QCoreApplication :: exit(int returnCode = 0)告诉应用程序退出并返回代码。
调用此函数后,应用程序离开主事件循环,并从调用返回exec()。 exec()函数返回returnCode。如果事件循环未运行,则此功能不执行任何操作。
按照惯例,returnCode为0表示成功,并且任何非零值都表示错误。
始终使用QueuedConnection将信号连接到此插槽是一个好习惯。如果在控制进入主事件循环之前(例如在“ int main”调用exec()之前)发出了连接到该插槽的信号(未排队),则该插槽无效,并且应用程序永不退出。使用排队连接可确保直到控制进入主事件循环后才调用该插槽。
请注意,与同名的C库函数不同,此函数确实会返回给调用者-事件处理停止。
另请参见quit()和exec()。