【问题标题】:Kivy: Hide mouse cursor on desktopKivy:在桌面上隐藏鼠标光标
【发布时间】:2015-05-07 02:47:09
【问题描述】:

我有一个全屏应用程序,我试图隐藏鼠标光标。设置是 Kivy 1.9.0Python 3.4.1 上用于 Windows,使用准备好的包。

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

1- 使用Config 对象:

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

2- 编辑 .kivy\config.ini:

[graphics]
.
.
.
show_cursor = 0

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]

我现在有点想不通。

【问题讨论】:

  • 使用配置为我工作

标签: python kivy


【解决方案1】:

您可以使用Window.show_cursor

在kivy 1.9.1版本中添加

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

【讨论】:

    【解决方案2】:

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

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

    我使用的是“out_of_the_box”的触摸屏 (LG 19MB15T)。

    【讨论】:

      【解决方案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 消息,它将光标更改回默认值。这就是为什么 win32api.SetCursor() 每次更改都必须触发 mouse_pos 的原因。

      但即便如此,有时我们也会看到默认光标闪烁。

      如果有人知道如何挂钩WM_SETCURSOR,以防止回调默认光标,它可以解决这个问题...

      【讨论】:

        猜你喜欢
        • 2013-09-16
        • 2011-12-23
        • 2011-05-24
        • 1970-01-01
        • 2015-05-27
        • 2018-06-04
        • 1970-01-01
        • 2022-12-31
        • 1970-01-01
        相关资源
        最近更新 更多