为什么运行py和kv脚本会出现黑屏?

时间:2018-09-28 11:14:12

标签: python python-3.x kivy

当我启动程序时,它会显示黑屏。我将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 :(得分:1)

您将得到黑屏/黑屏,因为在构建方法中,它将返回FloatLayout小部件作为根,并且没有将任何小部件添加到根。

Kv language » How to load KV

  

有两种方法可以将Kv代码加载到您的应用程序中:

     

按名称惯例:

     

Kivy在以下位置查找与您的App类同名的Kv文件   小写字母,如果以“ App”结尾则减去“ App”,例如:

MyApp -> my.kv
     

如果此文件定义了Root Widget,它将被附加到应用程序的   根属性,并用作应用程序小部件树的基础。

     

通过Builder::您可以告诉Kivy直接加载字符串或文件。如果此字符串或文件定义了根窗口小部件,它将是   方法返回的值:

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

或:

Builder.load_string(kv_string)

解决方案

有一些解决问题的方法。

方法1

将kv文件重命名为floatlayout.kv

方法2

kv文件

将类规则<FloatLayout>:替换为根规则FloatLayout:

Python脚本

  1. 添加导入语句from kivy.lang import Builder
  2. return FloatLayout()替换为return Builder.load_file('kv-filename.kv')

输出

Img01 - Method 1 Img02 - Method 2