正如我在以下主题中找到的那样:How to make python window run as "Always On Top"?
我知道怎么把窗户放在上面。但我想保持同样的立场。 autor说他找到了解决x和y值的工作。我想知道如何实现这一目标!
如何获取pygame窗口的x,y值?也许这是一种错误的做法。
我正在寻找的效果是当我通过一些函数调用触发它时窗口会显示在顶部。
对于那些了解英雄联盟的人来说,当游戏开始时,窗口会在顶部并保持相同的坐标。
答案 0 :(得分:3)
我找到了一个似乎做得很好的解决方案:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from ctypes import windll, Structure, c_long, byref #windows only
class RECT(Structure):
_fields_ = [
('left', c_long),
('top', c_long),
('right', c_long),
('bottom', c_long),
]
def width(self): return self.right - self.left
def height(self): return self.bottom - self.top
def onTop(window):
SetWindowPos = windll.user32.SetWindowPos
GetWindowRect = windll.user32.GetWindowRect
rc = RECT()
GetWindowRect(window, byref(rc))
SetWindowPos(window, -1, rc.left, rc.top, 0, 0, 0x0001)
现在将窗口置于顶部,只需调用onTop(pygame.display.get_wm_info()[' window'])来处理你的pygame窗口。
答案 1 :(得分:1)
使用相同的function:
是一个更短的解决方案from ctypes import windll
SetWindowPos = windll.user32.SetWindowPos
NOSIZE = 1
NOMOVE = 2
TOPMOST = -1
NOT_TOPMOST = -2
def alwaysOnTop(yesOrNo):
zorder = (NOT_TOPMOST, TOPMOST)[yesOrNo] # choose a flag according to bool
hwnd = pygame.display.get_wm_info()['window'] # handle to the window
SetWindowPos(hwnd, zorder, 0, 0, 0, 0, NOMOVE|NOSIZE)
答案 2 :(得分:0)
获取当前窗口位置:
x = rect.left
y = rect.top
import os
os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (x,y)
将窗口置于前台:
<button class="see" price="5">First</button>
<button class="see" price="8">Second</button>
<button class="see" price="10">Third</button>