2016-09-27 3 views
1

Я пытаюсь скопировать этот gif, что делается в Kivy (вот link на полную страницу)Kivy - черный экран между переходами

Так же, как я начал, я заметил черный экран между переходом (link к чему это выглядит, поэтому вам не нужно копировать-вставлять и запускать)

Почему появляется черный экран?

EDIT: Я должен работать без кнопок.

from kivy.app import App 
from kivy.lang import Builder 
from kivy.uix.screenmanager import ScreenManager, Screen 

# Create both screens. Please note the root.manager.current: this is how 
# you can control the ScreenManager from kv. Each screen has by default a 
# property manager that gives you the instance of the ScreenManager used. 
Builder.load_string(""" 
    <MenuScreen>: 
    canvas.before: 
     Color: 
      rgba: 122,255,0,2 
     Rectangle: 
      pos: self.pos 
      size: self.size 
    Label: 
     text: 'hello' 


<SettingsScreen>: 
    canvas.before: 
     Color: 
      rgba: 0,255,0,2 
     Rectangle: 
      pos: self.pos 
      size: self.size 
    Label: 
     text: 'hello' 
""") 

# Declare both screens 
class MenuScreen(Screen): 
    def on_touch_down(self, touch): 
     sm.current = 'settings' 

class SettingsScreen(Screen): 
    def on_touch_down(self, touch): 
     sm.current = 'menu' 

# Create the screen manager 
sm = ScreenManager() 
sm.add_widget(MenuScreen(name='menu')) 
sm.add_widget(SettingsScreen(name='settings')) 

class TestApp(App): 

    def build(self): 
     return sm 

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

EDIT: Я пробовал это, но до сих пор не работает

<sm>: 
    canvas: 
     Color: 
      rgb: (0, 255, 255) 
     Rectangle: 
      size: self.size 
      pos: self.pos 

ответ

1

Это черная область является холст менеджера экрана. Если вам не нравится черный, тогда вы можете нарисовать его, как и с экранами; или изменить тип перехода на NoTransition, чтобы скрыть его.

Кроме того, вы должны подумать о создании своего экранного менеджера внутри этой строки kv lang.

+0

Как его точно нарисовать? Это мой первый проект Kivy, поэтому он для меня все новый. – SnuKies

+0

@SnuKies Вы предоставили пример кода, в котором вы нарисовали несколько экранов. Сделайте то же самое с диспетчером экрана. – jligeza

+0

@jiligeza Я действительно не могу. Если можно, я прошу вас предоставить код. То, что я пробовал, редактируется. Но теперь это работает. Я застрял – SnuKies

1

Вы не должны напрямую использовать подклассы Screen. Вместо этого вы должны сначала добавить компонент (например, кнопку или макет), например, использовать RelativeLayout:

Builder.load_string(""" 
<MenuScreen>: 
    RelativeLayout: 
     canvas.before: 
      Color: 
       rgba: 122,255,0,2 
      Rectangle: 
       pos: self.pos 
       size: self.size 
     Label: 
      text: 'hello' 


<SettingsScreen>: 
    RelativeLayout: 
     canvas.before: 
      Color: 
       rgba: 0,255,0,2 
      Rectangle: 
       pos: self.pos 
       size: self.size 
     Label: 
      text: 'hello' 
""") 
Смежные вопросы