我正在寻找一种方法,其中wxPython图形用户界面元素可以添加到pygame.如果有其他方法可以解决将GUI元素添加到pygame中的问题,请提出建议。我在安装PGU.Thanks for help时遇到问题。
发布于 2012-02-29 13:59:16
不需要;您可以向PyGame添加wxWidgets。添加打开/保存对话框、按钮等很简单。有时当你尝试共享区域时,它会变得很麻烦,(如上所述,有冲突的窗口系统),但这绝对是可行的。
我是在几年前写的,所以它很混乱;但至少它很简单。它应该会帮助你入门:
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()发布于 2012-02-26 02:41:25
我不认为这是可能的,因为wxPython (使用wxWidgets c++)是窗口管理系统的包装器,它依靠操作系统函数在屏幕上绘制(它根据操作系统转换为正确的系统调用)。
Pygame使用SDL和一个简单的代码来管理窗口系统,它调用一些操作系统函数来创建窗口,并将其提供给SDL在其上绘制,就像画布一样。
一种方法是:
另一种方式(丑陋,不确定是否有效):
我认为你应该做的是:
pygame使用
我希望它能在某些方面对你有所帮助。
https://stackoverflow.com/questions/8798043
复制相似问题