本来是想做个抽奖的程序的,因为功能比较多,打算想着分模块来实现。就先做个骰子游戏先试试,骰子游戏功能很简单,点击开始按钮后,界面骰子图片不断切换,按下停止后,显示最终的效果。
本地骰子图片
最终实现的效果
本来觉得这个骰子游戏应该非常简单的,很快就搞定的,结果我发现想的太简单了,程序运行有两部分,一部分是负责界面要持续显示,另外一个部分需要骰子不断切换,这里肯定需要一个死循环。
如果正常一个线程肯定会出现界面卡死的现象,马上想到新建一个子线程,子线程负责处理死循环,不断的去显示随机图片;而主线程主要负责整个图形界面的展示,动手试了一下,发现又有一个新问题了,我要如何在主线程控制子线程了,比如让它停止和启动。
找了一下网上的方法,并没有我这种执行死循环的案例,只能用我的开关标志变量大法了。
解决后还剩最后一个问题,如果让线程间进行通信,子线程随机选择了图片,如何告诉主线程去显示,这里通过pyside2的信号机制解决了。
(全文完)