尝试在 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 属性 访问。
我正在尝试在 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 属性 访问。