Python 更改屏幕并在kivyMD上运行函数?

Python 更改屏幕并在kivyMD上运行函数?,python,python-3.x,kivy,kivy-language,kivymd,Python,Python 3.x,Kivy,Kivy Language,Kivymd,我正在学习Kivy,但我不知道如何同时改变屏幕和运行功能 我应该在哪里声明我的功能,以便按钮可以访问代码并运行函数 从kivymd.app导入MDApp 从kivy.lang.builder导入生成器 从kivy.uix.screenmanager导入screenmanager,屏幕 屏幕_helper=“” 屏幕管理器: 菜单屏幕: 功能屏幕: : 名称:“菜单” MDRectangleFlatButton: 文本:“函数” 位置提示:{'center\ux':0.5,'center\uy':

我正在学习Kivy,但我不知道如何同时改变屏幕和运行功能

我应该在哪里声明我的功能,以便按钮可以访问代码并运行函数

从kivymd.app导入MDApp
从kivy.lang.builder导入生成器
从kivy.uix.screenmanager导入screenmanager,屏幕
屏幕_helper=“”
屏幕管理器:
菜单屏幕:
功能屏幕:
:
名称:“菜单”
MDRectangleFlatButton:
文本:“函数”
位置提示:{'center\ux':0.5,'center\uy':0.5}
按:root.manager.current='功能屏幕'
:
名称:“功能屏幕”
MDRectangleFlatButton:
文本:“返回”
位置提示:{'center\ux':0.5,'center\uy':0.1}
按:root.manager.current='菜单'
"""
类菜单屏幕(屏幕):
通过
类功能屏幕(屏幕):
通过
#创建屏幕管理器
sm=屏幕管理器()
sm.add_小部件(菜单浏览(name='menu'))
sm.add_小部件(FunctionScreen(name='function'))
类DemoApp(MDApp):
def生成(自):
screen=Builder.load\u字符串(screen\u助手)
返回屏幕
#定义功能(自我):
#做一些事情,然后进入菜单屏幕
DemoApp().run()
我是否应该尝试在build函数中添加on_opress atribute


你们能帮帮我吗?

有几个方便的地方可以放置
函数()。一个在
菜单屏幕
中,在这种情况下,它将在
kv
文件中引用为:

root.function()
另一个方便的地方是
DemoApp
,在这种情况下,参考是:

app.function()
下面是您的代码版本,它将
函数()
放入
应用程序中:

from kivymd.app import MDApp
from kivy.lang.builder import Builder
from kivy.uix.screenmanager import Screen

screen_helper = """
ScreenManager:
    MenuScreen:
    FunctionScreen:

<MenuScreen>:
    name: 'menu'
    MDRectangleFlatButton:
        text: 'Function'
        pos_hint: {'center_x':0.5,'center_y':0.5}
        on_press:
            root.manager.current = 'function screen'
            app.function()

<FunctionScreen>:
    name: 'function screen'
    MDRectangleFlatButton:
        text: 'Back'
        pos_hint: {'center_x':0.5,'center_y':0.1}
        on_press: root.manager.current = 'menu'

"""


class MenuScreen(Screen):
    pass


class FunctionScreen(Screen):
    pass


class DemoApp(MDApp):

    def build(self):
        sm = Builder.load_string(screen_helper)
        return sm

    def function(self):
        # do stuff and then go to menu screen
        print('in function')


DemoApp().run()
从kivymd.app导入MDApp
从kivy.lang.builder导入生成器
从kivy.uix.screenmanager导入屏幕
屏幕_helper=“”
屏幕管理器:
菜单屏幕:
功能屏幕:
:
名称:“菜单”
MDRectangleFlatButton:
文本:“函数”
位置提示:{'center\ux':0.5,'center\uy':0.5}
新闻界:
root.manager.current='功能屏幕'
app.function()
:
名称:“功能屏幕”
MDRectangleFlatButton:
文本:“返回”
位置提示:{'center\ux':0.5,'center\uy':0.1}
按:root.manager.current='菜单'
"""
类菜单屏幕(屏幕):
通过
类功能屏幕(屏幕):
通过
类DemoApp(MDApp):
def生成(自):
sm=Builder.load\u字符串(屏幕\u辅助程序)
返回sm
def功能(自我):
#做一些事情,然后进入菜单屏幕
打印('在函数中')
DemoApp().run()
请注意,构建
屏幕管理器的代码行已被删除,因为它们是不必要的