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



我正在尝试用kivy创建一个屏幕。我希望屏幕的左上角有一个小的主菜单按钮,屏幕中央有一个大图像,大约是屏幕大小的80%,而不是在我想要的所有东西下面有一个按钮,按钮的大小取决于图像的大小。

举例来说,main_menu按钮应该在左上角,屏幕高度和宽度的5%应该在文本允许的范围内。图像大小应该是屏幕的80%,下面的按钮应该有5%的高度和宽度,这取决于图像的大小。

我当前的代码是这样的,但当我运行此代码时,下面按钮上的文本显示窗口的大小(19201080)和(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属性来访问。

最新更新