首页 > 解决方案 > 从屏幕类调用 kv 中的父函数

问题描述

我有一个script1.py带有函数function1和屏幕类的方法Screen,以及它附带的 kv 文件gui.kv。我想function1在课堂gui.kv上打电话。Screen

唯一的问题是我不知道怎么做。root.将调用 Screen 类,但我想从更广泛的范围调用,script1.py因为这function1是定义的地方。

我该怎么做?

编辑:

我将在一段更实用的代码中展示我的意思:

脚本1.py

from kivy.uix.screenmanager import Screen

def function1(digit):
    return digit + 2

class Screen(Screen):
    pass

gui.kv

<Screen>:
    FloatLayout:
        <I would like to call function1(digit) here>

我已经尝试过root.function1(digit),但这不起作用,因为rootScreen上课。我也尝试super().root.function(digit)访问整个脚本,但也没有用。

标签: pythonclassmethodskivy

解决方案


不幸的是,python/kivy 与上下文非常相关,这就是为什么我们要求一个最小的可重现示例

鉴于您提供的内容,您可以像这样function1kv文件中访问:

#:import Script1 Script1

<Screen>:
    FloatLayout:
        Label:
            text: str(Script1.function1(3)

请参阅kivy.lang 文档。请注意,这使用加载文件function1()时返回的值kv,并且不设置任何绑定。这也假设所有文件都在同一个文件夹中。


推荐阅读