Kivy,Python:具有嵌套规则的布局不会产生子窗口小部件的输出

问题描述 投票:0回答:1

我有一个简单的应用程序,应该对不同的屏幕使用 ScreenManager。当我创建我的屏幕之一并将其设为 app.root 小部件时,一切正常。但是,当我将屏幕作为子项放入 ScreenManager 中时,它不会产生任何输出,就好像小部件根本不存在一样。

testScreenManager.py:

from kivy.app import App

from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.graphics.vertex_instructions import Rectangle
from kivy.uix.screenmanager import ScreenManager, Screen

class MyScreenManager(ScreenManager):
    pass

class myScreen(Screen):
    pass

class myNavBoxes(BoxLayout):
    pass

class myApp(App):
    def build(self):
        return MyScreenManager()

if __name__ == "__main__":
    myApp().run()

我的.kv:

<MyScreenManager>:
    canvas.before:
        Rectangle:
            pos: self.pos
            size: self.size
    myScreen:

<myScreen>:
    BoxLayout:
        orientation: 'vertical'
        size_hint: 0.8, 0.3
        pos_hint: {'x':0.1, 'y':0.5}
        TextInput:
            id: username
            hint_text: 'Username'
            font_size: '20sp'
    myNavBoxes:

<myNavBoxes>:
    orientation: 'horizontal'
    size_hint: 1, .2
    pos_hint: {'x':.0, 'y':.0}
    Button:
        id: navButtonLogin
        text: 'Login'
        font_size: '15sp'
        size_hint_y: None

这会生成一个空白的白色矩形,其中没有任何小部件。

我尝试了很多事情。一个主要问题是:如果我不使用自定义小部件(直接从普通 kivy 类继承)并使用基本 kivy 类,则代码会产生预期的输出:

<MyScreenManager>:
    canvas.before:
        Rectangle:
            pos: self.pos
            size: self.size
    Screen:
        BoxLayout:
            orientation: 'vertical'
            size_hint: 0.8, 0.3
            pos_hint: {'x':0.1, 'y':0.5}
            TextInput:
                id: username
                hint_text: 'Username'
                font_size: '20sp'
        myNavBoxes:


<myNavBoxes>:
    orientation: 'horizontal'
    size_hint: 1, .2
    pos_hint: {'x':.0, 'y':.0}
    Button:
        id: navButtonLogin
        text: 'Login'
        font_size: '15sp'
        size_hint_y: None
python kivy kivy-language
1个回答
0
投票

问题是你的类名。让所有类名都以大写字母开头。

kv
文件对此敏感。

© www.soinside.com 2019 - 2024. All rights reserved.