基本上,我首先尝试将按钮设置为“活动”,运行一个进程,然后在该进程运行完毕后再次禁用该按钮。
使用pyGTK和Python,有问题的代码看起来像这样......
self.MEDIA_PLAYER_STOP_BUTTON.set_sensitive(True) #Set button to be "active"
playProcess = Popen("aplay " + str(pathToWAV) + " >/dev/null 2>&1",shell=True) #Run Process
playProcess.wait() #Wait for process to complete
self.MEDIA_PLAYER_STOP_BUTTON.set_sensitive(False) #After process is complete, disable the button again
然而,这根本不起作用。
非常感谢任何帮助。
答案 0 :(得分:1)
一切正常(python 2.7.3)。但是如果你在gui线程中调用playProcess.wait() - 你冻结gui线程而不重绘(抱歉,我的英文不是很好)。你确定你尝试使用subprocess.popen()吗?也许os.popen()?
我的小测试:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pygtk, gtk, gtk.glade
import subprocess
def aplay_func(btn):
btn.set_sensitive(True)
print "init"
playProcess = subprocess.Popen("aplay tara.wav>/dev/null 2>&1", shell=True)
print "aaa"
playProcess.wait()
print "bbb"
btn.set_sensitive(False)
wTree = gtk.glade.XML("localize.glade")
window = wTree.get_widget("window1")
btn1 = wTree.get_widget("button1")
window.connect("delete_event", lambda wid, we: gtk.main_quit())
btn1.connect("clicked", aplay_func)
window.show_all()
gtk.main()
结果:
init
aaa
bbb
是的,按钮工作正常。听起来也是。