python kivy显示图片_KIVY:动态按钮内的图像+标签

它实际上不仅显示最后一个按钮-它显示每个按钮,而是在相同的位置。问题是Button不是布局,因此不会执行其子级的布局。因此,每个按钮的GridLayout呈现在0, 0处,大小为100, 100,相对于最近的相对父对象的原点(在本例中,GridLayoutgrid_l,因为它包含在ScrollView中)。在

当您向非布局小部件添加小部件时,您可以通过设置位置和大小来布局这些小部件。请注意,您必须设置实际的pos(或x和{})和{}(或{}和{})-不能使用pos_hint或{},因为它们只由布局处理。在:

image_source: ''

subtext: ''

GridLayout:

height: self.parent.height # match the button's height

width: 100 # set to whatever you would like

pos: self.parent.pos # match the button's position

cols: 1

Image:

source: root.image_source

Label:

text: root.subtext

要使用动态类,您需要导入^{}:

^{pr2}$

然后,在循环中:for i in range(3):

btn = Factory.CustomButton(text=str(i), size_hint=(1, None),

image_source='kivy.png', subtext='label')

grid.add_widget(btn)

最后,需要注意的是:每次调用grid_l时,都会在grid_l上创建新的绑定。这些绑定只能创建一次。您可以通过将这些绑定移动到HomeScreen.__init__()在Python中绑定一次,但同样,在kv中这更容易:GridLayout:

id: gridlayoutID

cols: 1

size_hint: 1, None

row_default_height: 40

row_force_default: False

height: self.minimum_height # bind height to minimum_height

width: self.minimum_width # bind width to minimum_width

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值