首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在wx应用程序中使用线程和pyGST

在wx应用程序中使用线程和pyGST
EN

Stack Overflow用户
提问于 2009-05-02 17:29:51
回答 3查看 1.4K关注 0票数 0

好的,所以我正在编写一个应用程序,它用pyGST绑定播放音乐。

这需要使用线程来处理回放。绑定库为我处理大部分线程控件,这很好(以及我在它们中寻找的内容)。

现在,我还没有完全掌握这个概念,所以我很想得到一些参考。但据我所知,我必须告诉这个应用程序它可以使用多个线程。

我从gstreamer站点上的示例中收集到了这些信息,他们在那里使用这个调用:

代码语言:javascript
复制
gtk.gdk.threads_init()  
gtk.main()

根据这里的说法,这告诉应用程序它可以使用多个线程(或多或少),这就是我上述假设的来源。

这就是背景。现在拿着这个。我已经将这些行放在我的代码中,它们工作得很好。我的应用程序播放音乐,而不是一试就崩溃。但有些事感觉不对劲。

在我获得这些行的示例中,它们对整个GUI使用gtk,但我想使用wxWidgets,因此调用这个gtk函数这样做是错误的。

是否有一个与此等价的wx?还是可以使用它,并且它仍然可以跨平台工作?

此外,我还必须弄清楚如何在exit上杀死所有这些线程(它现在不这么做)--我再次在示例中看到了它们是如何使用gtk方法的,因此,再次寻找一个wx等效的线程。

PS:我认为这个(或解决方案)可能与wx.App.MainLoop()函数有关,但是我无法理解这个循环是如何工作的,因此,如果我有一个好的解决方案,那么关于这个循环的好参考就会很感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-10 10:57:20

试着用这个代替:

代码语言:javascript
复制
import gobject
gobject.threads_init()

我想知道为什么在每个python插件文档的开头,它都不是用大写形式写成的:我只花了几个小时就找到了它。

更多细节,这里

票数 1
EN

Stack Overflow用户

发布于 2009-05-04 09:07:45

我对pyGST没有经验,但是关于使用线程和wxPython的一般建议是只从主线程(即启动MainLoop的线程)更新GUI。有关详细信息,请参阅http://wiki.wxpython.org/LongRunningTasks

票数 0
EN

Stack Overflow用户

发布于 2009-05-05 02:06:49

我没有使用python绑定的经验,但我在Windows上成功地使用了wxWidgets和GStreamer。问题是,wxWidgets运行Windows循环,而GStreamer使用GLib事件循环。如果您不关心任何GStreamer事件,就不需要做任何事情。但是,如果您想接收任何GStreamer事件,则必须在一个单独的线程中运行您自己的GLib事件循环(GMainLoop),该线程具有一个单独的GMainContext。使用gst_bus_create_watch创建GST事件源,使用g_source_set_callback向源添加一个回调,然后将其附加到GLib事件循环的主上下文中,并使用g_source_attach。然后,您可以在回调中处理GST,例如,将事件转发到wx主事件循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/815255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档