簡體   English   中英

Kivy:使用ScreenManager時如何在單獨的屏幕中使用布局?

[英]Kivy: How do I use layouts within seperate screens while using ScreenManager?

我有一些Kivy代碼,到目前為止,該代碼顯示了一個帶有圖像和標簽的屏幕(BrickBreakerMenuScreen),當按下該按鈕時,將切換為一個中間有圖像的空白屏幕(GameScreen)。 但是,這不是我的代碼的目的。 從Builder中可以看到,第二個屏幕應該將Image對准右上角:

from kivy.lang import Builder
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.image import Image
from kivy import Config
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.uix.widget import Widget
from kivy.animation import Animation
import time

Config.set('graphics', 'multisamples', '0')
Builder.load_string('''
<BrickBreakerMenuScreen>:
    BoxLayout:
        orientation: 'vertical'
        Image:
            source: 'brickbreaker log.png'
        Label:
            font_name: 'vgafix.fon'
            text: 'Tap to start'

<GameScreen>:
    AnchorLayout:
        anchor_x: 'right'
        anchor_y: 'top'
        Image:
            source: 'settings-cog.png'
''')

class BrickBreakerMenuScreen(Screen):
    def __init__(self, **kwargs):
        super(BrickBreakerMenuScreen, self).__init__(**kwargs)

    def on_touch_down(self, touch):
        sm.current = 'game'

class GameScreen(Screen):
    def __init__(self, **kwargs):
        super(GameScreen, self).__init__(**kwargs)

sm = ScreenManager(transition = FadeTransition())
sm.add_widget(BrickBreakerMenuScreen(name='menu'))
sm.add_widget(GameScreen(name='game'))

class BrickBreakerInsanityApp(App):
    def build(self):
        return sm



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

這是由於ScreenManager引起的問題嗎? 我更改了kv腳本以嘗試查看AnchorLayout是否存在問題,但其他布局均未更改圖像在GameScreen上的位置。

任何幫助深表感謝。 謝謝!

圖片:

來自GameScreen的齒輪

來自BrickBreakerMenuScreen的徽標

您的代碼運行正常。 該圖像在右上角。
您的問題是該Image小部件的大小。 它和窗口的大小一樣大。
要解決此問題,您可以在Image屬性中添加size_hint: .1, .1 ,它會根據需要顯示。

    Image:
        size_hint: .1, .1
        source: 'settings-cog.png'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM