python - PyQt5 线程化 Selenium 脚本
问题描述
我很难弄清楚 PyQt5 中的线程。我为我在工作中使用的脚本制作了一个 GUI,以便与我的同事分享。该脚本使用从 GUI 接收的一些变量执行 selenium 浏览器自动化。该脚本位于不同的 .py 文件中,它不从任何类继承,当我单击查询按钮时,我只是在 mainapp.py 中实例化它。(哦,脚本没有返回任何东西,我添加了一个 return True 用于测试目的)
主应用程序.py
class OutputCheckerSub(Ui_OutputChecker):
def __init__(self):
super().__init__()
........
........
# Connecting Query button
self.query_button.clicked.connect(self.run_output_script)
def run_output_script(self):
self.output_script.run_script()
......
这将使用适当的变量启动脚本,但会使 GUI 应用程序崩溃。
我设法让线程有点工作(W / O设置变量)但它在10秒后崩溃。
多线程.py
class OutputScriptThread(QThread):
signal = pyqtSignal(bool)
def __init__(self):
super().__init__()
def run(self):
output_checker_script = output_checker.OutputCheckerScript()
state = output_checker_script.run_script()
self.signal.emit(state)
线程错误的 mainapp.py
class OutputCheckerSub(Ui_OutputChecker):
def __init__(self):
super().__init__()
.......
.......
# Connecting Query button
self.query_button.clicked.connect(self.run_output_script)
self.outputcheck_thread = multithreading.OutputScriptThread()
def run_output_script(self):
self.outputcheck_thread.start()
.....
一个更具挑战性的部分是将变量从一个类传递到另一个类。目前我的 GUI 直接修改了实例化脚本的变量。如果我让线程工作,我应该在哪里设置变量?从线程?
解决方案
推荐阅读
- php - 根据自定义帖子类型的最低和最高价格过滤查询
- json - 如何将文件 JSON 从邮递员转换为 Java 模型类?
- angular - Angular 中的事件绑定?
- xcode - Xcode Interface Builder 是否支持插件?
- amazon-web-services - Redshift 转换为文本类型
- javascript - Firebase 函数 - 在子集合中创建文档时从主集合获取数据
- python - 当我的输入有效时,为什么删除“自我”会导致错误?
- node.js - 无法使用 axios 将 jwtToken 从反应客户端发送到节点/快递后端
- java - OnResume 似乎有时在 dialog.dismiss() 和 finish() 之间被调用
- python-3.x - 无法导入 fancyimpute Jupyter Notebook