5

基本的に、最初にボタンを「アクティブ」にしてプロセスを実行し、そのプロセスの実行が終了したら、ボタンを再度無効にしようとしています。

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

ただし、これはまったく機能しません。

どんな助けでも大歓迎です。

4

1 に答える 1

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

はい、ボタンは正しく機能しています。音も。

于 2012-11-15T13:20:33.290 に答える