2016-09-27 39 views
1

我試圖複製這個gif,這是在Kivy做之間的黑色屏幕(這裏的link到整頁)Kivy - 過渡

正如我開始,我注意到link過渡之間黑屏(到它看起來像,所以你不必複製粘貼和運行)

爲什麼會出現黑屏?

編輯:我必須沒有按鈕的工作。

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() 

編輯:我試過,但仍然沒有工作

<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

你不應該直接使用屏幕子類。相反,您必須首先添加一個組件(例如Button或Layout),例如使用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' 
""")