python - 如何制作与 kivy 中的图像大小相同的小部件
问题描述
我想在我的应用程序底部有一个横幅,它可以随着不同的宽度缩放。但是,我无法使小部件的大小与图像的大小相对应,因此,我在横幅本身下方留下了一些空白区域。如何才能做到这一点?
这是我的尝试:
FloatLayout:
canvas.before:
Color:
rgb: utils.get_color_from_hex("#6ec4c1")
Rectangle:
size: self.size
pos: self.pos
GridLayout:
cols: 3
pos_hint: {"top": 0.95}
size_hint: 1, 0.05
ImageButton:
source: "images/back_arrow.png"
on_release: app.change_screen("home_screen")
Image:
source: "images/icon.png"
Label:
text: ""
Image:
id: banner
keep_ratio: True
allow_stretch: True
size_hint: 1, None
source: "images/banner.png"
此代码确实将图片放在底部!但理想情况下,我希望它以全屏宽度保持在底部并在 y 中缩放以适应它。这可能吗?
解决方案
默认情况下,size_hint
anyWidget
是(1,1)
. 这意味着您Image
的大小将与其包含的FloatLayout
. 因此,您可以设置 的值size_hint
,也可以设置size_hint: None, None
然后提供 的值size
。此外,pos_hint: {"bottom": 1}
也不起作用,因为bottom
它不是pos_hint
. 如果你想Image
在底部使用pos_hint: {'y':0}
,但默认值pos
是(0,0)
,所以你甚至不需要pos_hint: {'y':0}
.
此外,如果您将 a 设置size_hint
为None
而不提供相应的width
or height
,则将使用默认的width
or height
(即100
)。
我想我终于得到了你想要的。您可以使用BoxLayout
而不是FloatLayout
. 将BoxLayout
设置其子项的大小以适应其可用空间(请参阅文档)。所以,也许这样的事情会起作用:
BoxLayout:
orientation: 'vertical'
canvas.before:
Color:
rgb: utils.get_color_from_hex("#6ec4c1")
Rectangle:
size: self.size
pos: self.pos
GridLayout:
cols: 3
pos_hint: {"top": 0.95}
size_hint: 1, 0.05
ImageButton:
source: "images/back_arrow.png"
on_release: app.change_screen("home_screen")
Image:
source: "images/icon.png"
Label:
text: ""
Image:
id: banner
keep_ratio: True
allow_stretch: True
# size_hint: 1, None
source: "images/banner.png"
请注意,设置size_hint: 1, 0.05
中的GridLayout
意思是将 95% 的BoxLayout
内容分配给横幅。
推荐阅读
- javascript - 取消从jquery可拖动事件冒泡以单击拖动停止时的子元素
- python - AttributeError:“DataFrame”对象没有属性“allah1__27”
- react-native-flatlist - 在本机反应中为分区列表生成数据
- android - 将两个 SQL 列加载到列表视图中但只需要显示第一列 Android
- python - 关于打包第一个PyPi项目的问题
- java - 为多模块 Maven 项目构建多个组件 zip
- r - 从 webscraper 更改 R 中的日期但无法转换
- twilio - 小型客户服务团队的 Twilio 呼叫路由/管理
- java - 跨类层次结构重构 try-catch
- javascript - 网站标题 - 为每个字母应用不同的颜色