首页 > 解决方案 > 当python只识别一个.kv文件时如何解决

问题描述

我今天才开始学习 Kivy。我所指的书使用 kv 文件。问题是当我创建多个 .kv 文件时,当我导入另一个文件时,它不起作用。请任何详细的帮助将不胜感激,因为我是一个完整的初学者。谢谢

我已经搜索过很多地方并尝试过,但似乎没有任何效果。

主文件

    from kivy.app import App
    from kivy.uix.boxlayout import BoxLayout
    from kivy.uix.widget import Widget
    from kivy.lang import Builder

    class AddLocationForm(BoxLayout):
        pass

    class WeatherApp(App):
        pass

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

AddLocationForm.kv

    AddLocationForm:
    <AddLocationForm@BoxLayout>:
        orientation: "vertical"
        BoxLayout:
            TextInput:
            Button:
                text: "Search"
            Button:
                text: "Current Location"

天气.kv

    BoxLayout:
        Label:
            text: "Hello"
        Label:
            text: "Awesome"
        Label:
            text: "World"

我希望它打印字符串,并显示按钮。

标签: pythonkivy

解决方案


使用 Kv 语言指令,include <file>

片段-weather.kv

#:include AddLocationForm.kv

AddLocationForm:
    BoxLayout:
        Label:
            text: "Hello"
        Label:
            text: "Awesome"
        Label:
            text: "World"

片段 - AddLocationForm.kv

<AddLocationForm@BoxLayout>:
    orientation: "vertical"
    BoxLayout:
        TextInput:
        Button:
            text: "Search"
        Button:
            text: "Current Location"

输出

结果

Kv 语言 » Lang 指令

include <file>

句法:

#:include [force] <file>

包括一个外部 kivy 文件。这允许您将复杂的小部件拆分为它们自己的文件。如果强制包含,文件将首先被卸载,然后再次重新加载。例如:

# Test.kv
#:include mycomponent.kv
#:include force mybutton.kv

<Rule>:
    state: 'normal'
    MyButton:
    MyComponent:

# mycomponent.kv
#:include mybutton.kv

<MyComponent>:
    MyButton:
# mybutton.kv

<MyButton>:
    canvas:
        Color:
            rgb: (1.0, 0.0, 0.0)
        Rectangle:
            pos: self.pos
            size: (self.size[0]/4, self.size[1]/4)

推荐阅读