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

How to correctly call a function from one class inside another class

我无法使用此代码将我的宇宙飞船图像加载到屏幕上。 window 打开,但只有黑色。如果 class moveShip(Widget) 中的代码被放入 class mainApp(App) 中,飞船就会出现。我想知道如何正确调用 moveShip(Widget) class 以便我可以在屏幕上看到我的图像。

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()

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

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

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