gpt4 book ai didi

python - 在 python 和 pyGTK 中处理后激活和禁用按钮

转载 作者:太空狗 更新时间:2023-10-30 01:34:53 25 4
gpt4 key购买 nike

本质上,我试图先让按钮“激活”,运行一个进程,然后在该进程完成运行后,再次禁用按钮。

使用 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

但是,这根本不起作用。

如有任何帮助,我们将不胜感激。

最佳答案

一切正常(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

是的,按钮工作正常。声音也是。

关于python - 在 python 和 pyGTK 中处理后激活和禁用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12953840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com