Python 如何从另一个类中的函数调用一个类? kv文件。。。 按钮: 文本:“弹出窗口” 大小提示:0.2,0.2 按:root.debit() : 按钮: 文本:“popup2” 大小提示:0.2,0.2 #按:root.debit()

Python 如何从另一个类中的函数调用一个类? kv文件。。。 按钮: 文本:“弹出窗口” 大小提示:0.2,0.2 按:root.debit() : 按钮: 文本:“popup2” 大小提示:0.2,0.2 #按:root.debit(),python,kivy,Python,Kivy,有一个按钮弹出,当我按下此按钮时,我正在调用debit()函数。在debit函数中,我正在调用Hello(),但是我无法从这个类中获得任何信息。我做错了什么 每当我点击一个按钮,我想要一个新的屏幕,但没有屏幕导航。我该怎么做 您可以使用屏幕管理器进行此操作。 举个小例子: 从kivy.app导入应用 从kivy.lang导入生成器 KV=”“” #:导入NotTransition kivy.uix.screenmanager.NotTransition 盒子布局: 方向:“垂直” 标签: 正文:

有一个按钮弹出,当我按下此按钮时,我正在调用
debit()
函数。在debit函数中,我正在调用
Hello()
,但是我无法从这个类中获得任何信息。我做错了什么


每当我点击一个按钮,我想要一个新的屏幕,但没有屏幕导航。我该怎么做

您可以使用
屏幕管理器
进行此操作。
举个小例子:

从kivy.app导入应用
从kivy.lang导入生成器
KV=”“”
#:导入NotTransition kivy.uix.screenmanager.NotTransition
盒子布局:
方向:“垂直”
标签:
正文:“顶部”
屏幕管理器:
id:sm
转换:nottransition()
屏幕:
名称:“屏幕1”
按钮:
文本:“屏幕2”
发布时:sm.current=“screen2”
屏幕:
名称:“屏幕2”
按钮:
文本:“屏幕1”
发布时:sm.current=“screen1”
标签:
正文:“底部”
"""
类TestApp(应用程序):
def生成(自):
返回生成器。加载字符串(KV)
TestApp().run()
Question Kivy工厂 kivy工厂的概念是什么

答复 当关键字
Factory
在项目中的任何位置(例如kv文件或Python脚本)使用时,它将自动注册任何类或模块并实例化它们

实例 下面的示例说明了如何在kv文件中使用
工厂
,注册并实例化
弹出窗口
小部件,您好。Python脚本中没有Hello的类定义,也没有方法
debit()
的定义

main.py 问题2 每当我点击一个按钮,我想要一个新的屏幕,但没有屏幕 航行我该怎么做

解决方案 您可以使用Kivy
Popup
widget

实例 main.py
从kivy.app导入应用
从kivy.uix.popup导入弹出窗口
从kivy.uix.widget导入widget
从kivy.lang导入生成器
生成器。加载\u字符串(“”)
:
按钮:
文本:“弹出窗口”
大小提示:0.2,0.2
按:root.debit()
:
标题:“Hello Popup2”
自动解除:错误
按钮:
文本:“关闭弹出窗口”
大小提示:0.2,0.2
按:root.discouse()
""")
类借方(小部件):
def借记卡(自助):
返回Hello().open()
类Hello(弹出窗口):
通过
课程MyPracticeApp(应用程序):
def生成(自):
返回借方()
如果名称=“\uuuuu main\uuuuuuuu”:
MyPracticeApp().run()
输出

我不想使用ScreenManager…假设在左上角有4个按钮,分别是借记、贷记、配置文件和设置。。底部有一些图片。当我点击借记按钮时,我不想滑动屏幕,但想更改屏幕的视图,等等。谢谢你advance@Rahulcharan我更新了答案,就是为了做到这一点。不过,screenmanager是一种方式。你可以在kivy上任意嵌套小部件。@Rahulcharan没问题,假设我想在屏幕1中添加一些逻辑,如果这个逻辑是真的,那么我想进入屏幕2,否则我想留在屏幕1上……我该怎么做?你能给我推荐一个好的kivy教程,让我从零开始学习kivy……阅读官方文档吗对我来说很难…@ikolim谢谢你的帮助。它起作用了。。。。你能给我解释一下kivy工厂的概念吗…….请参考更新的帖子了解kivy工厂的详细信息。
from kivy.app import App
from kivy.uix.popup import Popup
from kivy.uix.widget import Widget
from kivy.uix.dropdown import DropDown

class MyPracticeApp(App):
    def build(self):
        return Debit()

class Debit(Widget):
    def debit(self):
        return Hello()


class Hello(Widget):
    pass



if __name__ == "__main__":
    MyPracticeApp().run()
<Debit>
    Button:
        text : 'popup'
        size_hint : 0.2,0.2
        on_press : root.debit()

<Hello>:
    Button:
        text : 'popup2'
        size_hint : 0.2,0.2
       # on_press : root.debit()
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.lang import Builder


Builder.load_string("""
#:import Factory kivy.factory.Factory

<Debit>:
    Button:
        text : 'popup'
        size_hint : 0.2,0.2
        on_press : Factory.Hello().open()

<Hello@Popup>:
    title: 'Popup2'
    auto_dismiss: False
    BoxLayout:
        orientation: 'vertical'
        Label:
            text: 'Hello Kivy'
        Button:
            text : 'Close Popup'
            size_hint : 1,0.2
            on_press : root.dismiss()
""")


class Debit(Widget):
    pass


class MyPracticeApp(App):
    def build(self):
        return Debit()


if __name__ == "__main__":
    MyPracticeApp().run()
def debit(self):
    return self.add_widget(Hello())
from kivy.app import App
from kivy.uix.popup import Popup
from kivy.uix.widget import Widget
from kivy.lang import Builder


Builder.load_string("""
<Debit>:
    Button:
        text : 'popup'
        size_hint : 0.2,0.2
        on_press : root.debit()

<Hello>:
    title: 'Hello Popup2'
    auto_dismiss: False
    Button:
        text : 'Close Popup'
        size_hint : 0.2,0.2
        on_press : root.dismiss()
""")


class Debit(Widget):
    def debit(self):
        return Hello().open()


class Hello(Popup):
    pass


class MyPracticeApp(App):
    def build(self):
        return Debit()


if __name__ == "__main__":
    MyPracticeApp().run()