我有一个全屏应用,我试图隐藏鼠标光标。使用准备好的软件包, Windows 的 Python 3.4.1 上的设置为 Kivy 1.9.0 。
我尝试过以下方法,但没有成功:
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]
我现在有点想法了。
答案 0 :(得分:1)
我遇到了同样的问题:我需要在kivy app中隐藏或更改我的鼠标光标。
我没有完美的解决方案只有部分解决方案:
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
,以防止回调默认光标,它可以解决这个问题......
答案 1 :(得分:0)
我刚刚阅读了文档,尝试了并修复了它(版本1.9.0)。要永久隐藏应用程序窗口中的光标(即使您使用的是触摸屏):
>>> from kivy.config import Config
>>> Config.set('graphics','show_cursor','0')
>>> Config.write()
>>> quit()
我使用的触摸屏(LG 19MB15T)可以使用' out_of_the_box'。
答案 2 :(得分:0)
您可以使用Window.show_cursor
它是在kivy版本1.9.1中添加的
from kivy.core.window import Window
Window.show_cursor = False