【问题标题】:Change the mouse cursor position in fullscreen全屏更改鼠标光标位置
【发布时间】:2015-08-06 19:48:40
【问题描述】:

我正在尝试在 PyGame 中使用其鼠标 API 以编程方式更改鼠标位置:

from pygame import mouse
mouse.set_pos(0, 0)

这似乎在窗口模式下工作正常,但在全屏模式下,什么都没有发生。我试过强行使光标不可见然后再次显示它,但希望它会重置它,但没有运气。


编辑为了充分披露,我没有直接使用 PyGame。我正在使用OpenSesame,它的“传统”后端(本质上是 PyGame 的包装器)。但是,如果需要,我确实可以访问 PyGame 原语。

【问题讨论】:

  • 您是否尝试过打印事件以查看它是否在全屏模式下的窗口外打印 pygame.mouse.get_pos()

标签: python pygame mouse fullscreen


【解决方案1】:

https://www.pygame.org/docs/ref/mouse.html#comment_pygame_mouse_get_pos

用打印测试看看屏幕上是否有 0,0 个坐标

Python 2.7

#!/usr/bin/python
import pygame
from pygame.locals import *

def main():
   pygame.init()
   pygame.display.set_mode((300,200))
   pygame.display.set_caption('Testing')
   running = True
   while running:
      for event in pygame.event.get():
         if event.type == QUIT:
            running = False
         if event.type == KEYDOWN and event.key == K_ESCAPE:
            running = False
         if event.type == MOUSEBUTTONDOWN:
            #print event.button
           print pygame.mouse.get_pos()
   pygame.display.quit()

if __name__ == '__main__':
   main()

Python 3.4

#!/usr/bin/python
import pygame
from pygame.locals import *

def main():
   pygame.init()
   pygame.display.set_mode((300,200))
   pygame.display.set_caption('Testing')
   running = True
   while running:
      for event in pygame.event.get():
         if event.type == QUIT:
            running = False
         if event.type == KEYDOWN and event.key == K_ESCAPE:
            running = False
         if event.type == MOUSEBUTTONDOWN:
            #print event.button
           print(pygame.mouse.get_pos())
   pygame.display.quit()

if __name__ == '__main__':
   main()

【讨论】:

  • 我没有直接使用 PyGame,而是使用了某种包装框架。 (所以请多多包涵!)我在尝试 set_pos 之前和之后立即打印了 get_pos 的结果:它正确地报告新位置(我实际上将它设置为屏幕,而不是(0, 0)),但实际光标保持静止!
  • 我不确定,我有一个问题是它不在屏幕上......你可以试试 screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN) 这个页面可能帮你Python Code Examples for pygame.FULLSCREEN
  • 这是由框架完成的。查看他们的代码,它正在执行set_mode(res, pygame.FULLSCREEN),其中res 设置为我要求的分辨率(在我的情况下为(1366, 768))。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多