在Windows和Linux的主窗口运行线程(Run thread in main window f

2019-10-20 06:26发布

我创建一个游戏的GUI(文本区,按钮,菜单等),我已经创建了一个wxPython的GUI内运行。 我创建了主窗口,运行pygame的线程中的面板。

问题:

在Windows上,pygame的线程在主窗口内运行完全 。 但在Linux上,Pygame的上弹出一个新窗口。 如何设置这个,使得Windows和Linux运行在主窗口中的线程?

码:

class SDLPanel(wx.Panel):
    def __init__(self,parent,ID,tplSize):
        global pygame
        global pygame_init_flag
        wx.Panel.__init__(self, parent, ID, size=tplSize)
        self.Fit()

        if (sys.platform == 'win32'):
            os.environ['SDL_WINDOWID'] = str(self.GetHandle())
            os.environ['SDL_VIDEODRIVER'] = 'windib'
        else:
            os.environ['SDL_VIDEODRIVER'] = 'x11'

        #here is where things change if pygame has already been initialized
        #we need to do so again
        if pygame_init_flag:
            #call pygame.init() on subsaquent windows
            pygame.init()
        else:
            #import if this is the first time
            import pygame
        pygame_init_flag = True #make sure we know that pygame has been imported
        pygame.display.init()
        window = pygame.display.set_mode(tplSize)
        self.thread = SDLThread(window)
        self.thread.Start()

    def __del__(self):
        self.thread.Stop()
        print "thread stoped"
        #very important line, this makes sure that pygame exits before we
        #reinitialize it other wise we get errors
        pygame.quit() 

Answer 1:

解决问题。

在主窗口中,我们必须self.Show()IDK为什么在Linux中主窗口必须表现。 相同的代码。 韩国社交协会所有



Answer 2:

这是一个声明警报,根据https://forums.libsdl.org/viewtopic.php?p=39332 ,溶液仅适用于SDL 1.2和不2.0。



文章来源: Run thread in main window for both Windows and Linux