【发布时间】:2019-02-11 10:19:45
【问题描述】:
我有一个运行良好的简单代码,当我将 .kv 文件中的根类更改为根实例时,它停止工作(某些东西已经在工作)。
在 .kv 文件中已经有两行来测试两种情况之间的差异,是注释一个/取消另一个注释的问题
我在 Kivy 论坛上问过,使用了没有结果的构建器类(因为我不明白区别在哪里!)。作为 Kivy 的新手,我现在的本能资源很少。
main.py:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.properties import NumericProperty, ReferenceListProperty, ObjectProperty
from kivy.clock import Clock
from colorsys import hsv_to_rgb, rgb_to_hsv
from kivy.uix.gridlayout import GridLayout
class MoneyControl(Widget):
cartel = ObjectProperty(None)
lay = 3
rainbow = [0.0,1.0,1.0,1.0]
def hsva_to_rgba(self, hsva):
rgba = hsv_to_rgb(hsva[0], hsva[1], hsva[2])
rgba = list(rgba)
rgba.append(hsva[3])
return rgba
def update(self, dt):
self.lay += 1
self.cartel.text = str(self.lay)
self.rainbow[0] += self.lay*0.0001
finalRgba = self.hsva_to_rgba(self.rainbow)
self.cartel.color = finalRgba
class MoneyControlApp(App):
def build(self):
prog = MoneyControl()
Clock.schedule_interval(prog.update, 1.0 / 60.0)
return prog
if __name__ == '__main__':
MoneyControlApp().run()
kv 文件:
#:kivy 1.0.9
<MoneyControl@Widget>: #This works. Comment this line...
#MoneyControl:#RootWidget instance (as appears in documentation) # ...uncomment this one. It stops working.
cartel: crt
Label:
id: crt
font_size: 20
center_x: root.width * 0.5
top: root.height * 0.5
text: "hola"
color: 1, .3, .8, 1
预期的结果将是在注释 .kv 文件的第一行并取消注释示例继续工作的第二行之后。
实际结果是,如果您更改行,kivy 会出现关于在第一种情况下显然有效的属性的错误(因此,没有错误)。
我想知道为什么会发生这种情况,当然还有如何解决它(只有没有原因的解决方法才会导致我/我们再次陷入同样的错误)。
【问题讨论】:
标签: kivy kivy-language