如何从另一个类中的一个类正确调用函数

时间:2015-04-19 14:04:55

标签: python class kivy

我无法使用此代码将我的太空船图像加载到屏幕上。窗户打开但除了黑色外什么都没有。如果将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()

1 个答案:

答案 0 :(得分:0)

您永远不会将move方法中的小部件添加到任何内容中,因此它们自然不会在任何地方显示。你可以做到,例如self.add_widget(f)看到他们。

你也可能不太想要这个,你应该在__init__方法中添加小部件(例如self.layout = FloatLayout()),然后更改它们,而不是创建和添加新的(例如self.scatter.pos = ...如果添加了self.scatter属性)。

我还建议尽可能使用kv语言,并给出以大写字母开头的窗口小部件类名,因为kv使用它来区分它们与属性(这也是标准的python约定)。

相关问题