当我使用kivy屏幕管理器时黑屏

时间:2016-08-27 08:26:23

标签: python-2.7 kivy

当我运行此代码时,它显示黑屏,但是当我在关于ScreenManager的kivy文档中使用该示例时,它运行良好。我也尝试过这篇文章中的解决方案https://gist.github.com/tshirtman/d455671401ff4c694306,但它不起作用。

import os

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, SlideTransition
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout


VIEW = os.path.abspath(os.path.join(os.path.dirname(__file__), 'views', 'moorish.kv'))


class RootScreen(Screen):
    pass


class Main(BoxLayout):
    pass


class Header(BoxLayout):
    pass


class SettingsScreen(Screen):
    pass


class SettingsMain(Widget):
    pass


class SettingsHeader(Widget):
    pass


class Container(BoxLayout):
    pass


class Circle(Widget):
    pass


screen_manager = ScreenManager(transition=SlideTransition())
screen_manager.add_widget(RootScreen(name='main'))
screen_manager.add_widget(SettingsScreen(name='settings'))


class WifiApp(App):
    def build(self):
        Builder.load_file(VIEW)
        return screen_manager


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

这是.kv文件

<Header>
    orientation: 'horizontal'
    rows: 1
    cols: 1
    Container:
        canvas:
            # Background
            Color:
                rgba: 1, 1, 1, 0.9
            Rectangle:
                pos: self.pos
                size: self.size
        Circle:
            on_touch_down:
                root.manager.transition.direction = 'right'
                root.manager.current = 'settings'
            id: 'Settings'
            canvas:
                Ellipse:
                    pos: self.x + 30, self.y + 15
                    size: 60, 60
                    source: 'logos/setting.png'

        Circle:
            id: 'Connected'
            canvas:
                Ellipse:
                    pos: self.x - 50, self.y + 15
                    size: 60, 60
                    source: 'logos/connected.png'

        Label:
            text: 'Wi-Fi Remote'
            font_size: '18sp'
            color: 0, 0, 0, .9
            right: 10


<Main>
    cols: 2
    rows: 2
    canvas:
        # Outer Background
        Color:
            rgba: 1, 1, 1, 0.4
        Rectangle:
            pos: self.pos
            size: self.size
    Container:
        canvas:
            # Inner Background
            Color:
                rgba: 1, 1, 1, 0.9
            Rectangle:
                pos: self.center_x - 150, self.center_y - 175
                size: 300, 350
        Circle:
            id: '1'
            canvas:
                Ellipse:
                    pos: self.center_x + 50, self.center_y + 25
                    size: 100, 100
                    source: 'logos/1.png'

        Circle:
            id: '2'
            canvas:
                Ellipse:
                    pos: self.center_x - 75, self.center_y - 100
                    size: 100, 100
                    source: 'logos/2.png'
        Circle:
            id: '3'
            canvas:
                Ellipse:
                    pos: self.center_x - 25, self.center_y + 25
                    size: 100, 100
                    source: 'logos/3.png'

        Circle:
            id: '4'
            canvas:
                Ellipse:
                    pos: self.center_x - 150, self.center_y - 100
                    size: 100, 100
                    source: 'logos/4.png'

<SettingsHeader>
    orientation: 'horizontal'
    rows: 1
    cols: 1
    Container:
        canvas:
            # Background
            Color:
                rgba: 1, 1, 1, 0.9
            Rectangle:
                pos: self.pos
                size: self.size
        Circle:
            id: 'Settings'
            canvas:
                Ellipse:
                    pos: self.x + 30, self.y + 15
                    size: 60, 60
                    source: 'logos/pointer.png'

        Label:
            text: 'Settings'
            font_size: '18sp'
            color: 0, 0, 0, .9
            right: 10


<SettingsMain>
    cols: 2
    rows: 2
    canvas:
        # Outer Background
        Color:
            rgba: 1, 1, 1, 0.4
        Rectangle:
            pos: self.pos
            size: self.size
    Container:
        canvas:
            # Inner Background
            Color:
                rgba: 1, 1, 1, 0.9
            Rectangle:
                pos: self.center_x - 150, self.center_y - 175
                size: 300, 350
        BoxLayout:
            TextInput:

            TextInput:

            Button:
                text: 'Save'


<RootScreen>
    orientation: 'vertical'
    cols: 1
    Header:
        size_hint: 1, 0.15

    Main:
        size_hint: 1, 0.85


<SettingsScreen>
    orientation: 'vertical'
    cols: 1

    SettingsHeader:
        size_hint: 1, 0.15

    SettingsMain:
        size_hint: 1, 0.85
出了什么问题? 提前谢谢

1 个答案:

答案 0 :(得分:2)

在加载构建器文件后放置屏幕管理器定义。例如:

class WifiApp(App):
    def build(self):
        Builder.load_file(VIEW)
        screen_manager = ScreenManager(transition=SlideTransition())
        screen_manager.add_widget(RootScreen(name='main'))
        screen_manager.add_widget(SettingsScreen(name='settings'))
        return screen_manager

您在kv文件中也有一些名称错误。

相关问题