Python 可以从kv文件中的另一个类调用函数吗?

Python 可以从kv文件中的另一个类调用函数吗?,python,kivy,Python,Kivy,我有一个用类创建的弹出窗口。在这个弹出窗口中,我有两个按钮。根据您按下的按钮,它必须调用主类中的函数 如果在kv文件中调用同一类中带有“on_release:”的函数,则编写“root….()”。如果我想从另一个类调用其中一个函数,我应该写什么 谢谢在您的kv中,您可以参考应用程序、自我或根目录。看见因此,如果您在其中任何一个类中引用了OtherClass,则可以在kv中使用该引用。例如,如果在应用程序类中包含一行: self.otherClassRef = OtherClass() 然后在您

我有一个用类创建的弹出窗口。在这个弹出窗口中,我有两个按钮。根据您按下的按钮,它必须调用主类中的函数

如果在kv文件中调用同一类中带有“on_release:”的函数,则编写“root….()”。如果我想从另一个类调用其中一个函数,我应该写什么


谢谢

在您的
kv
中,您可以参考
应用程序
自我
根目录
。看见因此,如果您在其中任何一个类中引用了
OtherClass
,则可以在
kv
中使用该引用。例如,如果在
应用程序
类中包含一行:

self.otherClassRef = OtherClass()
然后在您的
kv
中,您可以使用

on_release: app.otherClassRef.someMethod()
无论如何,您必须具有对
OtherClass
实例的引用才能访问实例方法

您可以使用访问静态方法

on_release: OtherClass.someStaticMethod()
或者使用

on_release: OtherClass().someMethod()
但是您可能需要在
kv
中导入
OtherClass
。差不多

#:import OtherClass OtherClassFileName.OtherClass

请注意,如果您执行
OtherClass().someMethod()
操作,则您正在创建
OtherClass
的新实例,而不是使用任何当前现有实例。

kv
中,您可以引用
app
self
root
。看见因此,如果您在其中任何一个类中引用了
OtherClass
,则可以在
kv
中使用该引用。例如,如果在
应用程序
类中包含一行:

self.otherClassRef = OtherClass()
然后在您的
kv
中,您可以使用

on_release: app.otherClassRef.someMethod()
无论如何,您必须具有对
OtherClass
实例的引用才能访问实例方法

您可以使用访问静态方法

on_release: OtherClass.someStaticMethod()
或者使用

on_release: OtherClass().someMethod()
但是您可能需要在
kv
中导入
OtherClass
。差不多

#:import OtherClass OtherClassFileName.OtherClass

请注意,如果您执行
OtherClass().someMethod()
操作,则您正在创建
OtherClass
的新实例,而不是使用任何当前现有实例。

请解释。如果您弹出一个窗口并要关闭它,请编写“on_release:root.disease()”。问题是在关闭它之前,我需要在数组中设置一个值。所以我需要调用另一个类中的函数。我只想知道从另一个类(比如“Main”)调用函数的命令是什么。我以为它是“Main.function()”,但它不起作用。那么OtherClass.function()呢?它说:未定义中的名称“OtherClass”。当然,我使用的是真实的类名,而不是“OtherClass”@Laurent提供了一个请解释的窗口。如果您弹出一个窗口并想要关闭它,您可以写“on_release:root.disclease()”。问题是在关闭它之前,我需要在数组中设置一个值。所以我需要调用另一个类中的函数。我只想知道从另一个类(比如“Main”)调用函数的命令是什么。我以为它是“Main.function()”,但它不起作用。那么OtherClass.function()呢?它说:未定义中的名称“OtherClass”。当然,我用的是真实的类名,而不是“OtherClass”@Laurent非常感谢John。正是我需要的!非常感谢你,约翰。正是我需要的!