現在、PySDL2 で作成したウィンドウが既にレンダリングされた後、ウィンドウの位置を変更しようとしています。
Window.position
Windowの属性を更新してみました。しかし、これを実行し、サーフェス自体をリフレッシュしても、変化は見られません。(ウィンドウは最初に描画された場所にとどまります)。
ただし、ウィンドウの位置を変更できることはわかっています。ウィンドウの作成行の位置を変更すると、最初に画面に描画されたときに変更されるからです。(後から変更することはできないようです)
コード:
import sdl2
import sdl2.ext
import sys
White = sdl2.ext.Color(255,255,255)
Red = sdl2.ext.Color(153,0,0)
class Background(sdl2.ext.SoftwareSpriteRenderSystem):
def __init__(self,window):
super(Background,self).__init__(window)
sdl2.ext.fill(self.surface,sdl2.ext.Color(0,33,66))
def main():
sdl2.ext.init() # Initialze
world = sdl2.ext.World() # Create World
W = sdl2.ext.Window("Default",size=(400,300), position = None,flags = sdl2.SDL_WINDOW_BORDERLESS) # Create Window
BG = Background(W)
world.add_system(BG)
W.show()
running = True
while running:
events = sdl2.ext.get_events()
for event in events:
if event.type == sdl2.SDL_QUIT:
running = False
break
if event.type == sdl2.SDL_MOUSEBUTTONDOWN:
X,Y = (300,100) # NEW COORDINATES
print("Updating: . . ")
W.position = X,Y # Updating the coordinates
print(W.position)
W.hide() # Tried hiding and showing the window
W.show() # Didn't help unfortunately
W.refresh() # Refresh the window.
return 0
if __name__ == "__main__":
sys.exit(main())
私の試みは、単にウィンドウの .position 属性を更新することです。しかし、先に述べたように、何も起こらないようです。
編集:このブログ投稿によると。それはほとんど不可能です。