Wenn Sie der Meinung sind, dass PyGame Python3 oder 64bit nicht unterstützt, scheint Entwicklung abgeschlossen. Wenn ich mir also die Site anschaue, sieht sie auf den ersten Blick lebendig aus. Die neueste version 1.9.1 Packages (August 6th 2009) Ich denke, das ist der Fall.
Versuchen Sie PySDL2, das der Nachfolger zu sein scheint. Es scheint ein ctypes-Wrapper für SDL2 zu sein, daher erwarte ich, dass es schnell funktioniert, ohne es zu erstellen.
Die Umgebung ist eine Anaconda-Version von Python 3.5 (64 Bit) unter Windows.
> cd PySDL2-0.9.3
> C:\Anaconda3\python.exe setup.py install
> cd examples
> C:\Anaconda3\python.exe sdl2hello.py
Ich erhalte die Fehlermeldung, dass SDL2 nicht gefunden werden kann.
https://www.libsdl.org/download-2.0.php Holen Sie sich die SDL2-DLL von. Stellen Sie die Umgebungsvariable PYSDL2_DLL_PATH so ein, dass sie auf das DLL-Verzeichnis verweist.
nochmal
> C:\Anaconda3\python.exe sdl2hello.py
gerührt. Die Beispiele mit anderen SDL_gfx funktionieren jedoch nicht.
SDL_gfx
Es gibt keine DLL ... Okay, lass uns alles bauen.
Ich habe es gebaut. Skript erstellen.
Beispiele sind helloworld.py und sdl2hello.py mit demselben Ausführungsergebnis.
import sdl2.ext
def ext_hello():
'''
helloworld.Auszug aus py
'''
sdl2.ext.init()
window = sdl2.ext.Window("Hello World!", size=(592, 460))
window.show()
processor = sdl2.ext.TestEventProcessor()
processor.run(window)
sdl2.ext.quit()
import ctypes
import sdl2
def hello():
'''
helloworld.Auszug aus py
'''
sdl2.SDL_Init(sdl2.SDL_INIT_VIDEO)
window = sdl2.SDL_CreateWindow(b"Hello World",
sdl2.SDL_WINDOWPOS_CENTERED,
sdl2.SDL_WINDOWPOS_CENTERED,
592, 460, sdl2.SDL_WINDOW_SHOWN)
running = True
event = sdl2.SDL_Event()
while running:
while sdl2.SDL_PollEvent(ctypes.byref(event)) != 0:
if event.type == sdl2.SDL_QUIT:
running = False
break
sdl2.SDL_Delay(10)
sdl2.SDL_DestroyWindow(window)
sdl2.SDL_Quit()
if __name__=='__main__':
hello()
#ext_hello()
Ich hatte so ein Gefühl. Das war's. ext scheint eine Schicht von versteckten c-Typen und ein kleines Framework zu sein. Verwenden wir sdl2 direkt.
SDL_Renderer https://wiki.libsdl.org/SDL_CreateRenderer Versuchen Sie zu transplantieren.
def hello_renderer():
print("hello_renderer")
posX = 100
posY = 100
width = 320
height = 240
sdl2.SDL_Init(sdl2.SDL_INIT_VIDEO);
win = sdl2.SDL_CreateWindow(b"Hello World", posX, posY, width, height, 0);
renderer = sdl2.SDL_CreateRenderer(win, -1, sdl2.SDL_RENDERER_ACCELERATED);
bitmapSurface = sdl2.SDL_LoadBMP(b"hello.bmp");
bitmapTex = sdl2.SDL_CreateTextureFromSurface(renderer, bitmapSurface);
sdl2.SDL_FreeSurface(bitmapSurface);
while True:
e=sdl2.SDL_Event()
if sdl2.SDL_PollEvent(ctypes.byref(e)):
if e.type == sdl2.SDL_QUIT:
break;
sdl2.SDL_RenderClear(renderer);
sdl2.SDL_RenderCopy(renderer, bitmapTex, None, None);
sdl2.SDL_RenderPresent(renderer);
sdl2.SDL_DestroyTexture(bitmapTex);
sdl2.SDL_DestroyRenderer(renderer);
sdl2.SDL_DestroyWindow(win);
sdl2.SDL_Quit();
Es bewegte sich leicht.
sdl2.SDL_PollEvent(ctypes.byref(e))
NULL -> None
b"Nach Bytes"
Danach denke ich, ich sollte Informationen aus dem Beispiel von C erhalten.
Recommended Posts