尝试在 kivy 上制作一个具有拉伸图像大小的按钮

Trying to make a button on kivy with the size of a stretched image

我正在尝试在 kivy 中创建一个屏幕。我希望屏幕在左上角有一个小的主菜单按钮,在屏幕中央有一个大图像,大约占屏幕大小的 80%,并且在我想要的所有按钮下方,按钮的大小取决于大小的形象。

例如, main_menu 按钮应该在左上角,屏幕高度的 5% 和他的宽度应该尽可能小,因为他的文字允许。 图像大小应为屏幕的 80%, 下面的按钮应该有 5% 的高度和宽度取决于图像大小。

我现在的代码是这样的,但是当我运行这段代码的时候,下方按钮上的文字显示了window(1920, 1080)和(1, 1)的大小.

我希望它显示的是图像的大小

#:kivy 0.0.0

<EditingScreen>:
    GridLayout:
        rows: 3
        spacing: 10

        AnchorLayout:
            size_hint: None, 0.05
            anchor_x: 'left'
            anchor_y: 'top'
            Button:
                text: 'Main Menu'
                on_press: root.manager.current = 'main'

        Image:
            id: some_image
            source: 'img.png'
            allow_stretch: True
            keep_ratio: True

        Button:
            text: str(some_image.size) + ' ' + str(some_image.size_hint)
            size_hint: None, 0.05                
            width: some_image.width

编辑: 添加我的 python 代码: 1) screen_manager.py:

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager

from editing_screen import EditingScreen


class Manager(ScreenManager):
    def __init__(self, **kwargs):
        super(Manager, self).__init__(**kwargs)

        self.add_widget(MainScreen(name='main'))
        self.add_widget(InstructionsScreen(name='instructions'))
        self.add_widget(EditingScreen(name='editing'))
        self.current = 'editing'


class ManagerApp(App):
    def build(self):
        return Manager()

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

2) editing_screen.py:

from kivy.uix.screenmanager import Screen
from kivy.lang import Builder

Builder.load_file('editing_screen.kv')

class EditingScreen(Screen):
    pass

3) 名为 editing_screen.kv

的文件中的第一个给定代码

在您的 editing_screen.kv 中,some_image.size 为您提供 Image 小部件的大小,不一定是图像本身的大小。图像的实际大小可以作为 Image 小部件的 norm_image_size 属性 访问。