【发布时间】:2017-10-24 06:22:18
【问题描述】:
如何根据我使用 Kivy 和 Python 按下的按钮来更改第二个屏幕的颜色/图像?这是说明我的问题的代码。
Python:
startvalue = 0
class Start(Screen):
pass
class End(Screen):
global startvalue
def which_color(self):
if startvalue == 1:
self.bg_image.source = 'blue.png'
elif startvalue == 2:
self.bg_image.source = 'red.png'
elif startvalue == 3:
self.bg_image.source = 'yellow.jpg'
elif startvalue == 4:
self.bg_image.source = 'green.jpg'
基维:
#: import startvalue __kivyseeing__.startvalue
ScreenManagement:
Start:
End:
<Start>:
startvalue: startvalue
id: start
name: 'start'
BoxLayout:
Button:
name: 'btn1'
id: btn1
text: "btn1"
on_release:
startvalue = 1
app.root.current = 'end'
Button:
name: 'btn2'
id: btn2
text: "btn2"
on_release:
startvalue = 2
app.root.current = 'end'
Button:
name: 'btn3'
id: btn3
text: "btn3"
on_release:
startvalue = 3
app.root.current = 'end'
Button:
name: 'btn4'
id: btn4
text: "btn4"
on_release:
startvalue = 4
app.root.current = 'end'
<End>:
id: end
name: "end"
endbtn: endbtn
bg_image: bg_image
on_pre_enter: self.which_color()
Image:
id: bg_image
source: ""
allow_stretch: True
Button:
name: 'endbtn'
id: endbtn
text: "end"
size_hint_y: .35
size_hint_x: .25
on_release: app.root.current = 'start'
我意识到全局变量可能非常危险,我宁愿不使用它们,但我不知道它还能如何工作。另外,我想知道如何在 Kivy 中更改 Python 全局变量,然后在第二个类中使用它们以确定屏幕背景。
【问题讨论】:
-
如果您已经在使用类,则根本不需要全局变量。在
def __init__(self):部分中将startvalue指定为self.startvalue,您将能够在构造函数或实例中的任何位置访问它。
标签: python python-3.x kivy kivy-language