#python #python-3.x #kivy #kivy-language
#python #python-3.x #kivy #kivy-language
Вопрос:
У меня есть некоторый код 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()
Это проблема из-за ScreenManager? Я изменил скрипт kv, чтобы попытаться выяснить, не связано ли это с AnchorLayout, но ни один из других макетов не изменяет местоположение изображения на игровом экране.
Любая помощь очень ценится. Спасибо!
Изображения:
Ответ №1:
Ваш код работает нормально. Изображение находится в правом верхнем углу.
Ваша проблема заключается в размере этого Image
виджета. Он такой же большой, как размер окна.
Чтобы исправить это, вы могли бы добавить size_hint: .1, .1
в Image
свойства, и они будут отображаться так, как вы хотите.
Image:
size_hint: .1, .1
source: 'settings-cog.png'