[英]Kivy: Hide mouse cursor on desktop
我有一個全屏應用程序,我試圖隱藏鼠標光標。 使用准備好的軟件包,使用適用於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]
我現在有點想法了。
我只是閱讀文檔,嘗試並修復它(版本1.9.0)。 要永久隱藏應用程序窗口中的光標(即使您使用的是觸摸屏):
>>> from kivy.config import Config
>>> Config.set('graphics','show_cursor','0')
>>> Config.write()
>>> quit()
我使用觸摸屏(LG 19MB15T)工作'out_of_the_box'。
我遇到了同樣的問題:我需要隱藏或更改我的鼠標光標在一個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()
的mouse_pos
。
但有時我們可以看到默認光標閃爍。
如果有人知道如何掛鈎WM_SETCURSOR
,以防止回調默認光標,它可以解決這個問題......
您可以使用Window.show_cursor
它是在kivy版本1.9.1中添加的
from kivy.core.window import Window
Window.show_cursor = False
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.