2017-02-15 23 views
1

东西我想从AUDIO屏幕称为“启动”新手。调用kivy

class Audio(Screen): 

    def start(self): 

class MainPage(Screen): 

    def open1(self, *args): 
     self.play = ImageButton(source= 'play.png',allow_stretch= True, pos= (600, 850), size_hint= (.2,.1)) 
     self.play.bind(on_press=audio.start()) #How do I call start? 

编辑:这仅仅是一个示例代码

+1

是你定义的'start(self)'方法吗?根据你的代码,它不是。另外,请记住,你应该有一个ScreenManager。 – lmiguelvargasf

+0

是'start(self)'是定义的,我有一个屏幕管理器。代码只是一个示例,谢谢....我只是想知道如何从另一个屏幕调用方法 –

回答

0

我认为你应该定义你的屏幕管理器的根本方法。例如:

class RootScreenManager(ScreenManager): 
    # your class implementation 
    def start(self): 
     # your method implementation 

class Audio(Screen): 
    def start(self): 
     # your code 

class MainPage(Screen): 
    # your code 

如果这种方法被称为按下按钮时,我强烈建议使用Kivy文件来定义你的观点,你可以使用on_press属性调用start

Button: 
    Image: 
     source: 'play.png' 
    size_hint: .2, .1 
    on_press: app.root.start() 
    pos: 600, 850 

另一方面,如果您不想使用以前的方法,则可以在要调用的方法内创建该类的实例,然后将该方法与按钮绑定在一起:

instance = Audio() 
self.play.bind(on_press=instance.start) 
+0

谢谢你,你的回答让我想到把所有东西放在一个屏幕上。 –

+0

@RashIsh,我很高兴我的回答能帮助你。 – lmiguelvargasf

0

您需要,你可以创建一个类的实例调用它的方法。

在Python中,它通过调用带有括号的类来完成,基本上就像方法调用一样。 虽这么说,你的最后一行从改变:

self.play.bind(on_press=audio.start()) 

这样:

self.play.bind(on_press=Audio().start()) 
+0

谢谢,完美无缺! –