如何在 Kivy Spinner 中通过单击值来更改图像的来源?
How can I make in Kivy Spinner change source of the Image by clicking on value?
想做一个简单的App,里面有很多图片。
无法理解如何在 main.py 中定义它。
我被 Spinner 按钮事件困住了 on_release。
此代码是我尝试执行的操作,但对我不起作用。
文件main.py
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class Container(BoxLayout):
pass
class testApp(App):
def build(self):
return Container()
if __name__ == '__main__':
testApp().run()
test.kv代码:
<Container>:
Spinner:
text: "Map"
values:"Main plan","Center", "Block A", "Block B", "Block C"
size_hint: None, None
size: 155, 44
pos:2,333
#on_release: values=("Main plan").imageplan.source='400px.jpg'
#on_release: values=("Center").imagecenter.source='center.jpg'
#on_release: values=("Block A").imageblocka.source='blocka.jpg'
Image:
id:imageplan
source:'mylogo.png'
size:100,100
size_hint:None,None
pos:200,200
您可以使用 DictProperty
将 Spinner
的值与将在 Image
中显示的内容相关联。
from kivy.app import App
from kivy.properties import DictProperty
from kivy.uix.boxlayout import BoxLayout
class Container(BoxLayout):
<b>options = DictProperty(
{"Main plan": "400px.jpg", "Center": "center.jpg", "Block A": "blocka.jpg"}
)</b>
class testApp(App):
def build(self):
return Container()
if __name__ == "__main__":
testApp().run()
<Container>:
Spinner:
id: spinner
text: "Map"
<b>values: root.options.keys()</b>
size_hint: None, None
size: 155, 44
pos:2,333
Image:
id:imageplan
<b>source: root.options.get(spinner.text, "mylogo.png")</b>
size:100,100
size_hint:None,None
pos:200,200
想做一个简单的App,里面有很多图片。 无法理解如何在 main.py 中定义它。 我被 Spinner 按钮事件困住了 on_release。 此代码是我尝试执行的操作,但对我不起作用。
文件main.py
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class Container(BoxLayout):
pass
class testApp(App):
def build(self):
return Container()
if __name__ == '__main__':
testApp().run()
test.kv代码:
<Container>:
Spinner:
text: "Map"
values:"Main plan","Center", "Block A", "Block B", "Block C"
size_hint: None, None
size: 155, 44
pos:2,333
#on_release: values=("Main plan").imageplan.source='400px.jpg'
#on_release: values=("Center").imagecenter.source='center.jpg'
#on_release: values=("Block A").imageblocka.source='blocka.jpg'
Image:
id:imageplan
source:'mylogo.png'
size:100,100
size_hint:None,None
pos:200,200
您可以使用 DictProperty
将 Spinner
的值与将在 Image
中显示的内容相关联。
from kivy.app import App
from kivy.properties import DictProperty
from kivy.uix.boxlayout import BoxLayout
class Container(BoxLayout):
<b>options = DictProperty(
{"Main plan": "400px.jpg", "Center": "center.jpg", "Block A": "blocka.jpg"}
)</b>
class testApp(App):
def build(self):
return Container()
if __name__ == "__main__":
testApp().run()
<Container>:
Spinner:
id: spinner
text: "Map"
<b>values: root.options.keys()</b>
size_hint: None, None
size: 155, 44
pos:2,333
Image:
id:imageplan
<b>source: root.options.get(spinner.text, "mylogo.png")</b>
size:100,100
size_hint:None,None
pos:200,200