2016-08-27 22 views
1

このコードを実行すると黒い画面が表示されますが、ScreenManagerについてkivyドキュメントの例を使用するとうまくいきます。私もこのポストhttps://gist.github.com/tshirtman/d455671401ff4c694306の解決策を試みたが、それは私を働かせません。kivyスクリーンマネージャーを使用すると黒い画面

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 

のですか? ありがとうございました

答えて

2

buildozerファイルが読み込まれた後に画面マネージャの定義を入力してください。例:

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ファイルにはいくつかの名前エラーがあります。

+0

ええ、その作業今、ありがとう:) yepはクラス名で余分な_を修正しました。 – Juggernaut