在 PyQt 中启动 new QThread() 时传递参数

2023-11-24

我有一个用 Python 编写的多线程应用程序,其中一个线程“照顾”GUI,另一个线程是工作线程。但是,工作线程有两个主要函数(或者说两个主要作业),我需要告诉运行函数到底要执行哪个作业。

所以我的想法是在工作线程中创建一个运行函数,该函数将采用一个参数(除了“self”)。该参数要么是“create”,要么是上传。言归正传,这里是我编写的代码到目前为止:

GUI.py

class GUI(QMainWindow):
  def __init__(self, parent=None):
    super, etc
    self.worker = worker.Worker()

  def create(self):         
     self.worker.start()

  def upload(self):
     self.worker.start()

工人.py

class Worker(QThread):
  def __init__(self, parent=None):
    super, etc

  def run(self):
     self.create_data() # OR   self.upload_data(), depends

所以问题是,我如何告诉worker.start()我希望它执行哪个功能?我意识到可以直接使用worker.run()方法,但“Rapid GUIdevelopment with PyQT”告诉我never直接调用worker.run(),并且始终使用worker.start()。


The start的方法QThread不接受争论。然而,你继承了QThread所以你可以随意定制它。因此,要实现你想要的,只需将参数传递到构造函数中Worker.

这是您的代码示例,稍作修改以显示其实际效果:

class Worker(QThread):
  def __init__(self, do_create_data=True, parent=None):
    super(QThread, self).__init__()
    self.do_create_data = create_data

  def run(self):
     if self.create_data:
         self.create_data()
     else:
         self.upload_data(), depends
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PyQt 中启动 new QThread() 时传递参数 的相关文章

随机推荐

  • 工具栏中图标和标题之间的填充/空格(Android 24)

    使用新的Android 24 我发现图标和标题Toolbar有更宽的填充 我找不到任何方法来解决这个问题 Example MainActivity java public class MainActivity extends AppComp
  • 无法编译SSIS组件; Visual Studio 2008 中缺少程序集

    SSIS 中没有通过 HTTP 下载文件的标准控制流任务 我尝试过一些解决方法 执行进程 wget 脚本任务 HttpClientConnection 但得出的结论是 执行此任务的最可靠且可重用的方法是创建自定义组件 我尝试通过以下方式做到
  • Python正则表达式使用点或逗号作为分隔符来表示带或不带小数的数字?

    我正在学习正则表达式 现在我正在尝试匹配一个或多或少代表这一点的数字 zero or more numbers possibly a dot or comma zero or more numbers 没有点或逗号也可以 所以它应该匹配以下
  • 如何使用 JMeter 测试 WCF Web 服务?

    我有一个托管在 IIS 上的 WCF Web 服务 它公开了一个采用三个整数参数的方法 我有一个简单的基于控制台的客户端 可以调用此方法 int InsertNewOrder short quantity int custID int pr
  • ASP.NET MVC 中的替代用户管理

    我正处于新 ASP NET MVC 应用程序的规划阶段 要求之一是存储一些用户信息 这些信息不属于 ASP NET MVC 附带的 User 类中的标准集 我想这可以归结为两个问题 1 我可以编辑已经使用的类来存储我需要的信息吗 2 如果我
  • JavaScript 中的“未捕获类型错误:对象不是函数”

    我无法理解为什么这不起作用 我的表单上有两个字段 当我单击按钮时 另一个文本字段值将更改为该函数的值 我怎样才能让它发挥作用 function calculate var odometerStart parseFloat document
  • 在 VBA 中查找 Excel 工作表的底部

    我想选择工作表的底部 但不要选择在使用 存储的内容下方 我可能有 10 000 行 但肯定没有 65 536 行 我不会提前知道有多少行 在 Excel 本身中 无论如何 在最近的版本中 Excel 97 就不那么友好了 您可以按 Ctrl
  • 带有注释的漂亮打印的 haskell 源代码

    我正在尝试重新格式化 重新打印 haskell 源代码 删除 添加空格 换行符 更改缩进样式 我已经找到包裹了Haskell src exts它可以解析并漂亮地打印 haskell 源代码 使用功能parseFileWithComments
  • C++。加权 std::shuffle

    有没有一种方法可以使用标准库进行漂亮而优雅的加权洗牌 有std discrete distribution 我想要的是这样的 std vector
  • CSS 类选择器样式未应用于 React 项目

    使用 Webpack 开发 React 项目 在 style css 中添加一些样式并导入到组件中import style from style css 添加没有选择器的元素 例如body div 风格很好 但我遇到了课程问题 设置类名与
  • Spring WebClient - 如何处理错误场景

    我们正在使用org springframework web reactive function client WebClient with reactor netty http client HttpClient作为 Spring 5 1
  • 如何获取 Vue 更新钩子中的更改?

    如果我有一个像这样的 Vue 组件 有没有办法获得导致更新的更改 就像如何watch钩子接受前一个和下一个数据的参数吗 watch someProp next prev you can compare states here React 似
  • Document.getElementById() 返回名称等于指定 id 的元素

    我之前曾在this SO关于 IE6 7 以及某些版本的 Opera 的有趣行为document getElementById可以找到一个元素 其name属性已定义 但未定义id属性 使得 function f document getEl
  • Angular Universal - 排除路线

    是否可以对某些路线不使用角度通用 我想对我的静态页面使用角度通用 当我登录我的应用程序时 我不想使用它 我想用 app 排除路由 请问我该怎么做 非常感谢 这是我的 server ts These are important and nee
  • Raspberry Pi 上的 crontab 无法播放音频

    我正在尝试让我的 Raspberry Pi 当前连接到蓝牙扬声器 以便每天按计划播放音频文件 其中我的cron工作正在更新中 daily获得新的时间 这基本上是祈祷的召唤 crontab l daily home pi athan upda
  • 来电屏幕上的活动弹出窗口

    我正在尝试覆盖来电屏幕 我知道我无法更改它 所以我正在尝试在顶部弹出一个活动 我的代码工作正常 除非手机闲置了几分钟 My code AndroidManifest xml
  • 将两个或多个 Crystal Reports 合并为一个 PDF

    我有一个复选框列表 如果我选择两个或多个值 则 CheckBoxList SelectedValues 将作为参数一一传递 并且我想为每个 SelectedValue 生成 PDF 格式的 Crystal Report 并且我想将所有 Cr
  • onDestroy之后是否可以调用回调方法?

    在我的应用程序的最新版本中 一些用户遇到了我无法重现的崩溃 目前仅Samsung设备运行Lollipop遇到这个问题 但这可能只是巧合 在分析了堆栈跟踪和相关代码之后 我想我可能已经找到了罪魁祸首 为了测试我的假设 我将代码简化为下面的代码
  • 编写供国际使用的软件的最佳实践 (i18n)

    我正在寻求编写过国际通用软件的专家的意见 我想了解人们在每个逻辑软件层 数据 rdbms 业务 中间件 用户界面 所采用的最佳实践 谢谢你提供的所有帮助 Data 当您使用 UTF 8 时 请做好每个字符最多占用 3 个字节的准备 对于中文
  • 在 PyQt 中启动 new QThread() 时传递参数

    我有一个用 Python 编写的多线程应用程序 其中一个线程 照顾 GUI 另一个线程是工作线程 但是 工作线程有两个主要函数 或者说两个主要作业 我需要告诉运行函数到底要执行哪个作业 所以我的想法是在工作线程中创建一个运行函数 该函数将采