我有基於pygame的視頻播放器,它具有用於GUI的berkelium瀏覽器, 下面是用於播放流的VLC庫。我沒有製作播放器,但我想 喜歡添加一個「調整大小」選項,目前不存在。 該應用程序是爲OS X調整視頻播放器的大小
在播放器的初始化製成,pygame.set_mode(screensize,OPENGL|DOUBLEBUF|RESIZABLE)
叫,問題是,當我調整窗口的大小比屏幕尺寸更大,這些部分是不可見(如圖所示竊聽),如果我嘗試pygame.set_mode
再次,它會導致應用程序崩潰,因爲依賴關係(瀏覽器和VLC)。
所以我決定用初始化屏幕:
pygame.set_mode(screenresolution, OPENGL|DOUBLEBUF|RESIZABLE)
哪些應該將其設置爲最大,然後再切換回原來的,較小的分辨率(如用鼠標調整)。
如何做到這一點?如何模擬RESIZABLE
標誌和鼠標移動動作?
該播放器可以很好地調整尺寸以適應較小的尺寸,但只有更大的尺寸纔是問題。
class InputAndDisplay:
def init(self, fullscreen=False):
global pygame, sys
# if 'darwin' in sys.platform:
# import sys
# sys.argv = ['Core.py']
# import pygame.macosx
# pygame.macosx.init()
pygame.init()
global screenSize
self.screenSize = screenSize
if fullscreen:
try: self.screenSize = pygame.display.list_modes()[0]
except Exception, e: print e
flags = OPENGL|DOUBLEBUF|FULLSCREEN
else:
flags = RESIZABLE|OPENGL|DOUBLEBUF
print 'screenSize:', self.screenSize
try:
povrsina = pygame.display.set_mode(self.screenSize, flags)
except Exception, e:
print e
self.screenSize = screenSize
povrsina = pygame.display.set_mode(self.screenSize, RESIZABLE|OPENGL|DOUBLEBUF)
pygame.display.set_caption('NetTVBox-WebPlayer')
pygame.mouse.set_pos(list(self.screenSize))
if 'darwin' not in sys.platform:
pygame.mouse.set_visible(False)
#pygame.key.set_repeat(300, 100)
if 'darwin' not in sys.platform:
pygame.mixer.quit()
if 'linux' in sys.platform: # try to turn off vsyncing
import ctypes
libgl = ctypes.cdll.LoadLibrary('libGL.so.1')
proc = libgl.glXGetProcAddressARB('glXSwapIntervalMESA')
_glXSwapIntervalMESA = ctypes.CFUNCTYPE(ctypes.c_int, ctypes.c_int)(proc)
_glXSwapIntervalMESA(0)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
#gluPerspective(45.0, 640/480.0, 0.1, 100.0)
glOrtho(-0.5, 0.5, -0.5, 0.5, -5, 5)
#glTranslatef(0.0, 0.0, -3.0)
#glRotatef(25, 1, 0, 0)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
glEnable(GL_TEXTURE_2D)
glShadeModel(GL_FLAT)
glClearColor(0.0, 0.0, 0.0, 0.0)
glClearDepth(1.0)
glEnable(GL_DEPTH_TEST)
glDepthFunc(GL_LEQUAL)
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)
self.textures = glGenTextures(2)
self.threeDmode = MODE_3D_OFF
這是在inputAndDisplay.py
init
及主要文件是Core.py
這就要求它,和很多其他的東西爲好。這就是爲什麼我沒有在這裏把所有的代碼,有很多的它,而不是所有重要
這裏是Core.py
部分:
input_and_display = InputAndDisplay()
input_and_display.init(self.fullscreen)
rc = RemoteControl()
rc.init()
media = Media()
if 1: # !
media.config = {
'buffering': state.mediaplayer_buffering,
'contrast': state.mediaplayer_contrast,
'saturation': state.mediaplayer_saturation,
}
media.init()
browser = Browser()
browser.init()
在此先感謝您的幫助
份額最好的初始化部分。 – iKlsR 2012-08-16 18:08:54