Kivy:在桌面上隐藏鼠标光标

2024-07-21 09:31:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个全屏应用程序,我试图隐藏鼠标光标。安装程序是kivy1.9.0基于python3.4.1的Windows,使用准备好的包。在

我尝试过以下方法,但没有成功:

1-使用Config对象:

from kivy.config import Config
Config.set("graphics", "show_cursor", 0)

2-编辑。kivy\配置.ini公司名称:

^{pr2}$

3-使用pygame:

import pygame
pygame.init()
pygame.mouse.set_visible(False)

4-将鼠标移出屏幕:

def move_mouse_away(etype, motionevent):
  # this one doesn't get called at all
  Window.mouse_pos = [1400, 1000]

Window.bind(on_motion=move_mouse_away)

5-使用Clock获得类似效果:

Clock.schedule_interval(self._reset_mouse, 0.05)

def _reset_mouse(self, time):
  Window.mouse_pos = [1400, 1400]

我现在有点没主意了。在


Tags: posimportselfconfigmovedef鼠标window
3条回答

我也遇到了同样的问题:我需要在kivy应用程序中隐藏或更改鼠标光标。在

我没有一个完美的解决方案只有一个部分:

from kivy.uix.widget import Widget
from kivy.core.window import Window
import win32api

class NoCursorWindow(Widget):

    def __init__(self, **kwargs):
        super(NoCursorWindow, self).__init__(**kwargs)

        Window.bind(mouse_pos=self.on_mouse_pos)

    def on_mouse_pos(self, *args):
        win32api.SetCursor(None)


if __name__ == '__main__':
    from kivy.base import runTouchApp
    runTouchApp(NoCursorWindow())

它只能部分工作: 使用win32api.SetCursor()时的问题是,当鼠标移动时,窗口会收到一条WM_SETCURSOR消息,该消息将光标改回默认值。这就是为什么mouse_pos的每次更改都必须触发win32api.SetCursor()。在

但即使这样,有时我们也可以看到默认光标闪烁。在

如果有人知道如何钩住WM_SETCURSOR,以防止调用默认光标,它可以解决这个问题。。。在

我只是阅读了文档,尝试并修复了它(版本1.9.0)。要在应用程序窗口中永久隐藏光标(即使您使用的是触摸屏):

>>> from kivy.config import Config
>>> Config.set('graphics','show_cursor','0')
>>> Config.write()
>>> quit()

我用的是触摸屏(lg19mb15t),它可以“跳出盒子”。在

您可以使用Window.show_cursor

它是在Kivy1.9.1版本中添加的

from kivy.core.window import Window
Window.show_cursor = False

相关问题 更多 >