我试图用pygtk制作一个简单的应用程序来播放和停止midi文件。在
以下是我目前所掌握的情况:
import pygtk
pygtk.require('2.0')
import gtk
import subprocess
class Teacher:
def __init__(self):
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.set_size_request(400, 200)
window.set_title("Music Teacher")
window.connect("delete_event",
lambda w,e: gtk.main_quit())
table = gtk.Table(4, 4, True)
window.add(table)
play = gtk.Button("Play")
play.connect("clicked", self.clicked_play)
play.show()
stop = gtk.Button("Stop")
stop.show()
table.attach(play, 0, 1, 0, 1)
table.attach(stop, 0, 1, 1, 2)
window.show_all()
def clicked_play(self, widget):
subprocess.Popen(["timidity", "~/somefile.mid"])
def main(self):
gtk.main()
return 0
Teacher().main()
有没有我可以从停止和删除事件发送中断来终止进程?我应该使用线程吗?在
您可以按如下方式处理
SIGTERM
、Ctrl+C或stop按钮:我们只需保存对在}。然后我们调用
clicked_play
中创建的Popen
对象的引用,然后使用该句柄通过click_stop
中的terminate
实例方法向进程发送{wait
(它应该立即结束,除非timidity
没有关闭SIGTERM
),以获取终止的进程(这样它就不会留下僵尸)。在我还在对
gtk.main()
的调用周围添加了一个try
/except
,这样当您发出Ctrl+C时,clicked_stop
将被调用,如果收到该信号,SIGTERM
处理程序也会执行相同的操作。在相关问题 更多 >
编程相关推荐