Kivy Slider触摸输入区域太大

时间:2018-08-31 00:10:23

标签: python slider kivy

我正在尝试使用Kivy创建游戏,当我尝试使用Slider小部件时,无法停止对附近的触摸输入做出反应。我在网上看了一下,找不到任何方法来控制小部件的反应区域。任何帮助,将不胜感激!以下是我制作的一个非常简单的Kivy Slider应用程序,用于尝试找出解决方案。

Test.py:

import kivy
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.widget import Widget
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
Window.size = (375,375)
Builder.load_file('Test.kv')
sm=ScreenManager()
class SliderScreen(Screen):
    pass    
class Test(App):
    def build(self):
        return sm
sm.add_widget(SliderScreen(name='sliderscreen'))
Test().run()

Test.kv:

<SliderScreen>:
    FloatLayout:
        Slider:
            pos_hint:{'x':.15,'y':.275}
            size_hint:.75,.25
            value_track:True
            background_width: 10
            value_track_color: 0,.4,.8,1
            min:0
            sensitivity: 'handle'
            max: 300

提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果仍然有人在寻找答案,那么如果您不想在视觉上修改小部件,则将覆盖collide_point()方法,该方法可以处理触摸输入。

为此,您需要创建一个自定义小部件类,如下所示:

class CustomSlider(Slider):
    def collide_point(self, x, y):
        return self.x <= x <= self.right and self.y+40 <= y <= self.top-40

这是什么,它改变了验证小部件内部触摸的条件。修改将检查比实际小部件更小的区域。如果这些值对您不起作用,请随时尝试,该代码非常不言自明。