我有一些Kivy代码,到目前为止,它显示一个屏幕(BrickBreakerMenuScreen)和一个图像和一个标签,当按下时,它会变成一个空白屏幕(GameScreen),中间有一个图像。然而,这不是我的代码的目的;从构建器中可以看到,第二个屏幕应该与右上角的图像对齐:
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()
这是因为屏幕管理器的问题吗?我已经修改了kv脚本,试图看看这是否与AnchorLayout有关,但是其他布局都没有改变图像在游戏屏幕上的位置
非常感谢您的帮助。谢谢
图像:
你的代码运行正常。图像位于右上角。
你的问题是
Image
小部件的大小。它和窗户一样大。要解决这个问题,您可以将
size_hint: .1, .1
添加到Image
属性中,它将根据您的需要显示相关问题 更多 >
编程相关推荐