我无法使用此代码将我的太空船图像加载到屏幕上。窗户打开但除了黑色外什么都没有。如果将class moveShip(Widget)
内的代码放入class mainApp(App)
内,则会出现该船。我想知道如何正确调用moveShip(Widget)
类,以便在屏幕上看到我的图像。
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.scatter import Scatter
from kivy.uix.image import Image
class moveShip(Widget):
def move(self):
# moving the ship along the y axis
f = FloatLayout()
s = Scatter(do_rotation=False, do_scale=False,
do_translation_x=False)
ship = Image(source = 'assets/pictures/ship.jpg')
f.add_widget(s)
s.add_widget(ship)
return f
class mainApp(App):
def build(self):
sh = moveShip()
sh.move()
return sh
if __name__ == "__main__":
mainApp().run()
答案 0 :(得分:0)
您永远不会将move
方法中的小部件添加到任何内容中,因此它们自然不会在任何地方显示。你可以做到,例如self.add_widget(f)
看到他们。
你也可能不太想要这个,你应该在__init__
方法中添加小部件(例如self.layout = FloatLayout()
),然后更改它们,而不是创建和添加新的(例如self.scatter.pos = ...
如果添加了self.scatter属性)。
我还建议尽可能使用kv语言,并给出以大写字母开头的窗口小部件类名,因为kv使用它来区分它们与属性(这也是标准的python约定)。