【发布时间】:2018-08-31 00:10:23
【问题描述】:
我正在尝试使用 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
提前谢谢你!
【问题讨论】:
-
我想我们可能需要更多信息来帮助您。我已经运行了您发布的代码,但没有看到对触摸事件的任何反应(除了在滑块手柄上触摸和拖动)。如果除了您在发布的代码中显示的内容之外,您还使用
on_touch事件,请注意touch事件会传播到所有小部件,因此您可能需要进行碰撞测试以确定它是否与Slider与否。查看Widget docs 中的“Widget 触摸事件冒泡”和collide_point()。 -
澄清:问题是当我在滑块附近触摸时(显然不是在它的任何部分),它仍然会做出反应,就好像我在触摸滑块一样。如果我按下滑块上方并水平拖动,它会滑动(尽管我实际上没有按下它)。这不是其他小部件的问题,因为没有(这是上面的所有代码)。