我正在Windows XP上开发一个Python 2.7.1/Tkinter 8.4应用程序,用于检查来自RS-232端口的几行输入.但是,如果没有输入到达,它将永远处于循环中.
我正在尝试在GUI上实现"放弃测试"按钮,但由于主线程忙于等待输入,所以每次检查是否按下按钮似乎都没有.我尝试过update_idletasks()和time.sleep(1)没有成功.
有什么建议?
Tk是单线程的,因此如果主线程忙,GUI将冻结.一种解决方案是使用单独的线程来进行读取,因此当读取阻塞时,主线程可以继续.当您获得一行输入时,您可以将其推送到由主线程监视的队列中.
另一种方法是弄清楚如何在串行端口上进行非阻塞读取.如果有数据,请阅读.如果没有,返回主事件循环.然后,您需要配置事件循环以每隔几百毫秒左右轮询一次端口,具体取决于您的性能需求.
| 归档时间: |
|
| 查看次数: |
816 次 |
| 最近记录: |