[英]How to get slider value from .kv file to python file in kivy
我不确定如何将 slider 值从 a.kv 文件获取到 python 文件。
我的.kv 文件是:
<MyGrid>
slider: slider
Slider:
id: slider2
min: 0
max: 23
step: 1
orientation: 'horizontal'
pos: 530,400
Button:
text:"Start"
on_press: root.btn()
pos: 350,120
我的 python 文件是:
import kivy
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.slider import Slider
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.config import Config
from kivy.properties import ObjectProperty
from kivy.app import App
from kivy.uix.checkbox import CheckBox
from kivy.lang import Builder
Config.set('input', 'mouse', 'mouse,multitouch_on_demand')
class MyGrid(Widget):
slider = ObjectProperty(None)
def btn(self):
print(self.slider.text)
class MyApp(App):
def build(self):
return MyGrid()
if __name__ == '__main__':
x = MyApp().run()
我究竟做错了什么? 我收到一条错误消息:
AttributeError:“滑块”object 没有属性“文本”
您的id , btn function和主布局不正确。所以我全部修复了。您可以获得滑块的值,而不是文本。 主布局需要使用 boxlayout、floatlayout、gridlayout 等。 小部件不是布局。 所以你的小部件(如按钮和其他)消失了。 检查下面的代码。
from kivy.config import Config
from kivy.properties import ObjectProperty
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
kv = Builder.load_string("""
<MyGrid>
slider: slider
BoxLayout:
orientation: 'vertical'
Label:
text: str(slider.value)
Slider:
id: slider
min: 0
max: 23
orientation: 'horizontal'
Button:
text: "Print Value"
on_press: root.btn()
""")
Config.set('input', 'mouse', 'mouse,multitouch_on_demand')
class MyGrid(BoxLayout):
slider = ObjectProperty()
def btn(self):
print(self.slider.value)
class MyApp(App):
def build(self):
return MyGrid()
if __name__ == '__main__':
MyApp().run()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.