черный экран менеджер кивы - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь создать простое приложение Kivy (1.10.1) с диспетчером экрана и файлами .kv, но я продолжаю получать черный экран.

Мой ScreenManager (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()

Iуже удалось отобразить экран входа в систему, когда я не использовал ScreenManager, и он работал без вызова Builder.load_string() Я искал в Интернете, и все рабочие решения включают вызов Builder.load_string(), который я предпочел бы не использовать, возможно лизаставить это работать?

1 Ответ

0 голосов
/ 01 марта 2019

Проблема - Черное окно

1) Когда исполняется main.py, Kivy ищет файл Kv с тем же именем, что и у вашего класса App, в нижнем регистре, за исключением «App», если он заканчивается на «App»Например:

NCOApp -> nco.kv

2) Вы создали экземпляры LoginScreen, но нет связанных с ним представлений.

Решение

Создайте файл kv, nco.kv вGUI папки и добавьте следующий вид для экрана входа в систему:

#:include GUI//login.kv

Вывод

Kivy Output

...