首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过多个.kv文件和.py文件创建kivy应用程序

通过多个.kv文件和.py文件创建kivy应用程序
EN

Stack Overflow用户
提问于 2019-12-17 09:27:04
回答 1查看 763关注 0票数 1

我的档案:

login.kv

  • workarea.py -
  1. main.py - main.kv
  2. login.py - welcom.kv

如何用main.py和main.kv制作的按钮打开main.py?

我不想把所有的接口代码放在一个main.kv文件中。

main.py

代码语言:javascript
复制
from login import Login
from welcome import Welcome

    class Screen_manager(ScreenManager):
        def __init__(self,**kwargs):
            super(ScreenManager,self).__init__(**kwargs)
            self.current='login-page'# not screen by name 'login-page' error
            self.addWidget(Login(name='login-page') #'nonetype' object has no attribute 'stop'


    class MainApp(App):
        Build(self):
            return ScreenManager()

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

login.py

代码语言:javascript
复制
from kivy.uix.screenmanger import Screen
    class Login(Screen):
        def openwelcome(self):
            ?????

login.kv:

代码语言:javascript
复制
<Login>:
    name:login-page
    Button:
        text:"press me"
        on_press:root.openwelcome()
EN

回答 1

Stack Overflow用户

发布于 2022-07-01 18:17:22

我不确定,你是在找这个答案还是别的什么。为了处理多个.kv和.py文件,让我们假设我们拥有libs/baseclass中的所有.py文件&以及libs/kvs中的所有.kv文件。为了集成所有文件,我们可以创建一个main.kv文件,其内容如下所示:

代码语言:javascript
复制
#  import the python files defining the Screens
#: import Screen1 libs.baseclass.screen1.Screen1
#: import Screen2 libs.baseclass.screen2.Screen2

#  include the kv files for the other Screens
#: include libs/kvs/screen1.kv
#: include libs/kvs/screen2.kv

ScreenManager:
    Screen1:
    Screen2:

最后,通过应用程序中的Builder加载此文件。要链接不同的屏幕,让我们假设您当前在Screen1上,并希望转到Screen2,请创建屏幕1.kv和屏幕2.kv,如下所示:

代码语言:javascript
复制
<Screen1>:
    name: 'Screen1'

# And in screen2.kv file

<Screen2>:
    name: 'Screen2'

最后,在您的main.kv上应该如下所示

代码语言:javascript
复制
ScreenManager:
    Screen:
        name: "main_screen"

        BoxLayout:
            orientation: "vertical"

            Label:
                text: "main screen"
            Button:
                text: "to screen 1"
                on_press: app.root.current = "Screen1"
            Button:
                text: "to screen 2"
                on_press: app.root.current = "Screen2"
    Screen1:
    Screen2:

希望这能回答你的问题。如果是的话,请接受答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59371149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档