鱼C论坛

 找回密码
 立即注册
查看: 3025|回复: 2

如何判断哪个是主线程,如何将某个线程设置为主线程?wx.CallLater

[复制链接]
发表于 2019-9-9 17:28:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在执行 wx.CallLater() 语句时报错:
wx._core.wxAssertionError: C++ assertion "wxThread::IsMain()" failed at ..\..\src\common\timerimpl.cpp(60) in wxTimerImpl::Start(): timer can only be started from the main thread

在脚本里用了下面的语句来定义线程的(因为用wx.gauge做了个进度条,使用wx.CallLater()的目的是在用户没有动作时对对话框进行延时销毁,方便自动化)
  1. class TestThread(Thread):
  2.     def __init__(self):
  3.         Thread.__init__(self)
  4.         self.start()

  5.     def run(self):
复制代码


我想消去这个报错,能想到的思路是把这个线程设为主线程,但是不知道要怎么做,也不到怎么看哪个线程是主线程,感觉整个程序跑得稀里糊涂的,盼大佬们帮助下这个只会找轮子用的小白吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-9-16 14:11:27 | 显示全部楼层
自问自答:后面自建的线程都是子线程,主程序是主线程。如何将子线程变为主线程,这个没有找到教程,有可能是不可行的。
很多GUI的操作都是不能在子线程中进行,有种多线程就是个大坑的赶脚。。。所以解决方案是不用多线程,用回调函数实现。https://python3-cookbook.readthedocs.io/zh_CN/latest/c07/p10_carry_extra_state_with_callback_functions.html
感谢风介大佬的解答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-18 22:55:24 | 显示全部楼层
FC的注册很坑 发表于 2019-9-16 14:11
自问自答:后面自建的线程都是子线程,主程序是主线程。如何将子线程变为主线程,这个没有找到教程,有可能 ...

谢谢,我先研究一下看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-19 06:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表