Почему при запуске сценария py и kv я получаю пустой экран? - PullRequest
0 голосов
/ 28 сентября 2018

Когда я запускаю программу, у меня появляется черный экранЯ использовал файл python для функциональности и файл kv для свойств объектов.Py-файл:

import kivy
kivy.require('1.9.0')

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout


class FloatLayoutApp(App):   

    def build(self):
        return FloatLayout()

FlApp = FloatLayoutApp()
FlApp.run()

kv-файл:

<CustButton@Button>:
    font_size: 32
    color: 0, 0, 0, 1
    size: 150, 50
    background_normal: ""
    background_down: "bg-grey.jpg"
    background_color: .88, .88, .88, 1
    size_hint: .4, .3

<FloatLayout>:
    CustButton:
        text: "Top Left"
        pos_hint: {"x": 0, "top": 0}
    CustButton:
        text: "Bottom Left"
        pos_hint: {"right": 1, "y": 0}
    CustButton:
        text: "Top Right"
        pos_hint: {"right": 1, "top": 1}
    CustButton:
        text: "Bottom Left"
        pos_hint: {"left": 1, "bottom": 0}
    CustButton:
        text: "Center"
        pos_hint: {"center_x": 0, "center_y": 0}

1 Ответ

0 голосов
/ 28 сентября 2018

Вы получаете черный / пустой экран, потому что в методе сборки он возвращает виджет FloatLayout в качестве корня и в него не добавляются виджеты.

Язык Kv »Как загрузитьKV

Существует два способа загрузки кода Kv в ваше приложение:

По соглашению имен:

Kivy ищетфайл Kv с тем же именем, что и у вашего класса App в нижнем регистре, за вычетом «App», если он оканчивается на «App», например:

MyApp -> my.kv

Если этот файл определяет корневой виджет, он будет присоединен к приложению.корневой атрибут и используется в качестве основы дерева виджетов приложения.

By Builder: Вы можете указать Kivy непосредственно загружать строку или файл.Если эта строка или файл определяет корневой виджет, он будет возвращен методом:

Builder.load_file('path/to/file.kv')

или:

Builder.load_string(kv_string)

Решение

Естьнесколько решений проблемы.

Метод 1

Переименуйте ваш файл kv в floatlayout.kv

Метод 2

Файл kv

Заменить правило класса, <FloatLayout>: на корневое правило, FloatLayout:

Python Script

  1. Добавить оператор импорта, from kivy.lang import Builder
  2. Заменить return FloatLayout() наreturn Builder.load_file('kv-filename.kv')

Выход

Img01 - Method 1 Img02 - Method 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...