【发布时间】:2018-12-20 05:44:17
【问题描述】:
我想在 kivy 中制作一个自定义鼠标光标。 这是我目前拥有的:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from kivy.uix.scatter import Scatter
from kivy.core.window import Window
#Window.show_cursor = False
KV = """
FloatLayout
BoxLayout
MyTextInput
MyMouse
<MyTextInput>:
font_size: 40
text: 'Some text'
<MyMouse>:
mouse_im_size: mouse_im.size
auto_bring_to_front: True
do_rotation:False
do_scale:False
do_translation_y:False
Image
id: mouse_im
size: 100, 100 / self.image_ratio
source: 'cursor-pink.png'
"""
class MyTextInput(TextInput):
pass
class MyMouse(Scatter):
def __init__(self, **kwargs):
Window.bind(mouse_pos=self.on_mouse_pos)
super(MyMouse, self).__init__(**kwargs)
def on_touch_down(self, *touch):
return
def on_mouse_pos(self, *args):
x,y = args[1]
self.pos = [x,y-self.mouse_im_size[1]]
class MyApp(App):
def build(self):
self.root = Builder.load_string(KV)
MyApp().run()
问题是当我将鼠标移出应用程序的左边缘或上边缘时,光标图像仍保留在应用程序内,我希望鼠标图像消失,就像我将鼠标移出右边缘或下边缘时一样.
问题似乎是on_mouse_pos() 仅在鼠标位于窗口内时才有效。
我found a way 获取鼠标在窗口外时的位置,但我不知道如何在我的任务中使用它。也许有更好的方法来做到这一点。
【问题讨论】: