寻找有效的方式来组织大型Kivy项目

3 投票
1 回答
2705 浏览
提问于 2025-04-18 11:15

我刚开始学习kivy,想知道怎么把应用程序的一部分放在一个单独的文件夹里。我希望能方便地重复使用代码,并且让项目的结构更清晰。我不太喜欢像很多教程那样把所有东西都放在一个模块里,所以想知道有没有办法把小部件放到不同的模块里。

-main:
    -modules/
       -login/
          -main.py
          -main.kv
       -other/
          -ohter.kv
          -other.kv
    -main.py #<- here I want to put widgets from 'login' and 'other'
    -main.kv

1 个回答

0

我通常会把每个小部件(widget)放在一个完整的文件里:

from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder

Builder.load_string('''
<LoginMain>:
    Label:
        text: 'hi'
    Button:
        text: 'press me'
''')

class LoginMain(BoxLayout):
    ...

然后你只需要告诉Kivy在哪里可以找到每个小部件,这可以通过Factory来实现。在你的应用程序的构建方法中这样做是最简单的:

class MyApp(App):
    def build(self):
        Factory.register('LoginMain', module='myapp.modules.login.main')
        Factory.register('Other', module='myapp.modules.other.other')
        return Factory.LoginMain()

撰写回答