作者mantour (朱子)
看板Python
标题[问题] 有关图形界面的问题
时间Tue Nov 13 00:03:28 2007
我想要写一支程式,包涵:
1.一个主要的回圈,例如倒数计时
2.一个图形介面,包涵:
1.一个状态栏,可以即时的显示回圈的进度
2.一个start的按钮,程式执行时先显示视窗,当我按下start才开始跑回圈
3.一个stop的按钮,可以随时停止回圈,并显示最後的状态
我用Tkinter来写,碰到几个问题
1.一开始我把回圈和视窗写在一起,就遇到一个问题:
当我开始跑回圈时,即使我在回圈中改变widget里面的变数,视窗也不会马上更新
要等到整个回圈跑完,才会更新成最後的值
而且在跑回圈的过程中视窗的按钮都变成没反应
我的解决方法是把回圈和视窗分二个thread去跑,请问这样的方式是正确的吗
2.这样一来就产生第二个问题,我没办法透过我的视窗去中止正在跑回圈的thread
我上网查到的解决方法是在每一圈开头去检查一个变数的值(0/1或T/F)
然後我想停止回圈时,只要改变这个变数,程式就会在下一圈跳出
那如果我的回圈又分成好几个step
例如
while 1:
step 1
step 2
step 3
而我希望我在其中任何一个step都可以把它停下来,不用等到整圈跑完
我是不是就要写成
while 1:
if halt==1:
break
else:
step 1
if halt==1:
break
else:
step 2
......
这样感觉好长喔…有没有更好的方法呢?
感谢大家看完我的问题
如果我有那些不好的做法也请告诉我
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.213.158
※ 编辑: mantour 来自: 140.112.213.158 (11/13 00:10)
1F:推 yungyuc:GUI 程式不是这样写的,请参考 event loop 的原理 11/15 02:49
2F:推 mantour:谢谢 我去找资料来看看 11/15 09:28
3F:推 yungyuc:再看了一下,我觉得你的程式大概是有 bug 11/16 00:17