首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pygame中添加wxpython

在pygame中添加wxpython
EN

Stack Overflow用户
提问于 2012-01-10 10:57:58
回答 2查看 1.7K关注 0票数 6

我正在寻找一种方法,其中wxPython图形用户界面元素可以添加到pygame.如果有其他方法可以解决将GUI元素添加到pygame中的问题,请提出建议。我在安装PGU.Thanks for help时遇到问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-29 13:59:16

不需要;您可以向PyGame添加wxWidgets。添加打开/保存对话框、按钮等很简单。有时当你尝试共享区域时,它会变得很麻烦,(如上所述,有冲突的窗口系统),但这绝对是可行的。

我是在几年前写的,所以它很混乱;但至少它很简单。它应该会帮助你入门:

代码语言:javascript
复制
class SDLThread:
    def __init__(self,screen):
        self.m_bKeepGoing = self.m_bRunning = False
        self.screen = screen
        self.color = (255,0,0)
        self.rect = (10,10,100,100)
    def Start(self):
        self.m_bKeepGoing = self.m_bRunning = True
        thread.start_new_thread(self.Run, ())
    def Stop(self):
        self.m_bKeepGoing = False
    def IsRunning(self):
        return self.m_bRunning
    def Run(self):
        while self.m_bKeepGoing:
            pass
##            GetInput()
##            Draw()
        self.m_bRunning = False;
class SDLPanel(wx.Panel):
    def __init__(self,parent,ID,tplSize):
        global pygame
        wx.Panel.__init__(self, parent, ID, size=tplSize)
        self.Fit()
        os.environ['SDL_WINDOWID'] = str(self.GetHandle())
        os.environ['SDL_VIDEODRIVER'] = 'windib'
        import pygame
        pygame.init()
        icon = pygame.Surface((1,1));icon.set_alpha(0);pygame.display.set_icon(icon)
        global Surface
        Surface = pygame.display.set_mode(tplSize)
        self.thread = SDLThread(Surface)
        self.thread.Start()
    def __del__(self):
        self.thread.Stop()
票数 4
EN

Stack Overflow用户

发布于 2012-02-26 02:41:25

我不认为这是可能的,因为wxPython (使用wxWidgets c++)是窗口管理系统的包装器,它依靠操作系统函数在屏幕上绘制(它根据操作系统转换为正确的系统调用)。

Pygame使用SDL和一个简单的代码来管理窗口系统,它调用一些操作系统函数来创建窗口,并将其提供给SDL在其上绘制,就像画布一样。

一种方法是:

  • 使用ctype在OS库文件中进行C调用以绘制系统本机小部件,这样您就不会使用任何pygame函数。

另一种方式(丑陋,不确定是否有效):

  • 我不知道怎么做,但我找到了一种方法,可以将小部件转换为图像缓冲区对象,并像使用表面一样使用它(普通位图)。

我认为你应该做的是:

pygame使用

  • ,使用表面和鼠标/键盘事件建立你自己的图形用户界面来控制它,或者用wx下载一些pre-made.
  • Stick,你可以很容易地在系统原生主题上建立你的图形用户界面,你也可以使用DC (绘制上下文)来像pygame一样绘制,并且可能(不确定)将pygame上下文作为一个小部件包含到wx中。您可以从具有自己的事件处理程序的wx中受益。

我希望它能在某些方面对你有所帮助。

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

https://stackoverflow.com/questions/8798043

复制
相关文章

相似问题

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