我正在尝试使用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
提前谢谢!
答案 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
这是什么,它改变了验证小部件内部触摸的条件。修改将检查比实际小部件更小的区域。如果这些值对您不起作用,请随时尝试,该代码非常不言自明。