问题描述
我试图从AUDIO屏幕调用“start”
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楼
您需要先创建一个类的实例,然后才能调用其方法。
在Python中,它通过使用尾部括号调用类来完成,基本上就像方法调用一样。 话虽如此,改变你的最后一行:
self.play.bind(on_press=audio.start())
对此:
self.play.bind(on_press=Audio().start())
2楼
我认为您应该在屏幕管理器根目录中定义此方法。 例如:
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)