黑屏经理沮丧

black screen manager kivy

我正在尝试使用屏幕管理器和 .kv 文件构建一个简单的 Kivy (1.10.1) 应用程序,但我总是黑屏。

我的屏幕管理器(GUI/nco.py)

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager
from GUI.login import LoginScreen

class NCO(ScreenManager):
    def add_widget(self, screen):
        super(NCO, self).add_widget(screen)
        # TODO: add a radial gradiant background from (0, 155, 190) to (0, 5, 20)
        print("added screen:", screen.name)

class NCOApp(App):
    def build(self):
        nco = NCO()
        nco.add_widget(LoginScreen(name="login"))
        return nco

GUI/login.py

from kivy.uix.screenmanager import Screen

class LoginScreen(Screen):
    def test(self):
        mail = self.ids.mail.text.strip()
        pwd = self.ids.pwd.text
        print("e-mail:", mail)
        print("password:", pwd)

GUI/login.kv

#:kivy 1.10.1

<LoginScreen>:
    AnchorLayout:
        size: self.parent.size

        BoxLayout:
            size_hint: None, None
            size: 400, 35
            orientation: "horizontal"

            TextInput:
                id: mail
                font_size: 20
                hint_text: "e-mail"
                multiline: False
                write_tab: False

            TextInput:
                id: pwd
                font_size: 20
                password: True
                hint_text: "password"
                multiline: False
                write_tab: False

            Button:
                size_hint: .3, 1
                text: "login"
                on_press: root.manager.current.test()

main.py

from GUI.nco import NCOApp
from kivy.config import Config
Config.set("graphics", "fullscreen", "auto")

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

我在不使用 ScreenManager 时已经成功显示了登录屏幕,并且无需调用 Builder.load_string() 我在网上搜索过,每个可行的解决方案都涉及调用 Builder.load_string(),我不想使用它,是否可以让它工作?

问题 - 黑色 Window

1) 当执行 main.py 时,Kivy 会查找与您的 App class 同名的小写 Kv 文件,如果以 'App' 结尾则减去“App” 例如:

NCOApp -> nco.kv

2) 您已经创建了 LoginScreen 的实例,但没有与之关联的视图。

解决方案

在文件夹 GUI 中创建一个 kv 文件,nco.kv 并为 LoginScreen 添加以下视图:

#:include GUI//login.kv

输出