繁体   English   中英

如何从不同的 py 文件制作 kivy 应用程序

[英]How to make kivy app from different py files

我正在尝试用不同的.py 文件制作应用程序。 但我不知道如何将它们添加在一起,我有一个主文件和一个登录文件,计划添加更多,但我现在正在试验这些。 它们现在非常基本,直到我弄清楚它们之间的这种“联系”,然后我将开始添加一些更复杂的东西。 我尝试了几件事,但它们没有用,但我将它们留在代码中供您查看(我试图让应用程序从 MainWindow 启动,并在按下第一个按钮时进入登录页面*)。 这是代码,请帮助我。

*现在当我按下按钮时,它给了我这个错误:OSError:异常:访问冲突写入0x0000000080006010

这是 main.py:

from kivy.lang import Builder
from kivy.app import App
import login
from kivy.uix.screenmanager import Screen

kv = Builder.load_string('''
<MainWindow>:
    GridLayout:
        cols:1
        GridLayout:
            rows:5
            Button:
                text:"NOVA ROBA"
                on_release:
                    root.call_login()

            Button:
                text:"KUPCI"

            Button:
                text:"PRODATO"

            Button:
                text: "AGRONOMI"
            Button:
                text: "STANJE U MAGACINU"
''')


class MainWindow(Screen):
    def call_login(self):
        login.app().run()
    pass

class main_app(App):
    def build(self):
        return MainWindow()

if __name__ == '__main__':
    main_app().run()

这是登录.py:

from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
from kivy.app import App

class Login(Screen, App):
    def build(self):
        return
    pass

kv = Builder.load_string('''
<Login>:
    name:"login"
    GridLayout:
        rows:2
        GridLayout:
            cols:2
            Label:
                text:"Password: "
            TextInput:
                id:passwd
                multiline: False
        Button:
            text: "Submit"
            on_release:
                passwd.text = ""
    ''')


class app(App):
    def build(self):
        return Login()

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

您正在创建 2 个不需要的应用程序。 而不是从 Loginscreen 中的 Screen 和 App 都继承,而是仅从 Screen 继承。 然后在 main.py 的 build 方法中创建一个 ScreenManager,然后将导入的登录屏幕添加为小部件,要切换到新屏幕,请在 MainWindow 的 call_login 方法中使用 self.manager.current = "login"

class app(App):
    def build(self):
        sm = ScreenManager()
        sm.add_widget(MainWindow())
        sm.add_widget(Login())
        return sm

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM