首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >游戏与PyGTK并排

游戏与PyGTK并排
EN

Stack Overflow用户
提问于 2015-12-12 05:01:56
回答 2查看 317关注 0票数 6

我正在处理一个python项目,其中我有一个pygame窗口,但我也希望在它旁边有一个PyGTK窗口,同时提供有关pygame窗口中对象的信息。然而,当我启动PyGTK窗口时,游戏窗口就会冻结,直到关闭PyGTK窗口,即使我在线程中完成了所有的PyGTK操作。

来自我的项目的重要代码片段:

代码语言:javascript
复制
import thread
import pygtk
import gtk

class SelectList:
    def __init__(self, parent):
        self.parent = parent
        self.initWindow()
        self.main()

    def main(self):
        gtk.main()

    def initWindow(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)

        self.window.connect("destroy", self.destroy)

        self.window.set_title("Selection info")
        self.window.set_position(gtk.WIN_POS_CENTER)

        # junk that I didn't bother including in this example
        # ...

        self.window.show_all()

    #This is only connected to the main window
    #When this is called it iterates through every toplevel window and closes it
    def destroy(self, widget, data=None):
        for i in gtk.window_list_toplevels():
            i.destroy()
        gtk.main_quit()


def openList(instance):
    SelectList(instance)

class Maker:
    def __init__(self):
        # more stuff that I won't include
        pass

    def logic(self, newkeys):
        if K_l in newkeys:
            thread.start_new_thread(openList, (self, ))

    def main(self):
        while True:
            # pygame stuff, including sending all new key presses to logic method
            pass
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-15 17:00:57

我查看了OnGle在他的答案中提到的堆栈溢出问题,并看到了两个我觉得可以实现的解决方案。

解决方案1

https://stackoverflow.com/a/199288/4468084 I可以将程序的PyGTK部分完全保存在一个单独的进程中,只需在两个当前运行的程序之间发送数据。然而,这似乎有点过头了,我需要。

解决方案2

我可以使用PGUOcempGUI,这两个库都是用来简化低级图形编程的。使用其中之一,我可以完全忘记使用PyGTK,而只使用来自它们的预先制作的对象。

摘要

虽然解决方案1将我最初的PyGTK实现牢记在心,但对于我正在制作的这样一个简单的程序来说,它可能也太复杂了。最重要的是,使用解决方案1还意味着在运行我的程序时必须同时打开两个窗口,使程序显得杂乱无章、笨重不堪。

另一方面,解决方案2干净地将对象列表集成到我的Pygame项目中,同时也减少了我必须编写的代码数量。我也不必担心不同的操作系统以不同的方式处理数据传输,这可能是解决方案1的一个问题。最后,这似乎是我的更好的决定。

票数 2
EN

Stack Overflow用户

发布于 2015-12-15 02:36:02

我对gtk或python中的线程还不太了解,无法真正帮助您,但也许您可以将其用作pyGame在pyGTK应用程序中的一项工作。

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

https://stackoverflow.com/questions/34236469

复制
相关文章

相似问题

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