从屏幕类调用 kv 中的父函数
Posted
技术标签:
【中文标题】从屏幕类调用 kv 中的父函数【英文标题】:Calling parent function in kv, from screen class 【发布时间】:2021-01-30 04:05:24 【问题描述】:我在script1.py
中有一个方法,带有一个函数function1
和一个屏幕类Screen
,以及它附带的kv 文件gui.kv
。我想在gui.kv
中调用function1
,在Screen
类中。
唯一的问题是我不知道怎么做。 root.
将调用 Screen 类,但我想从更广泛的范围调用 script1.py
,因为这是定义 function1
的地方。
我该怎么做?
编辑:
我将在一段更实用的代码中说明我的意思:
Script1.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)
但这不起作用,因为 root
是 Screen
类。我也试过super().root.function(digit)
来访问整个脚本,但也没有用。
【问题讨论】:
请发帖minimal reproducible example。向我们展示您的尝试。 我实际上试图让我的问题尽可能直截了当且与上下文无关。我将添加一些基本脚本。 【参考方案1】:不幸的是,python/kivy 与上下文密切相关,这就是我们要求minimal reproducible example 的原因。
鉴于您提供的内容,您可以从kv
文件中访问function1
,如下所示:
#:import Script1 Script1
<Screen>:
FloatLayout:
Label:
text: str(Script1.function1(3)
请参阅kivy.lang documentation。请注意,这使用了在加载 kv
文件时从 function1()
返回的值,并且不设置任何绑定。这也假设所有文件都在同一个文件夹中。
【讨论】:
感谢您的回复!这行得通。主要问题是导入。以上是关于从屏幕类调用 kv 中的父函数的主要内容,如果未能解决你的问题,请参考以下文章