Python 2.7 将图像放在Kivy标签的中间
我有以下Python 2.7 将图像放在Kivy标签的中间,python-2.7,kivy,Python 2.7,Kivy,我有以下Kivy语言文件,它应该模仿拨号程序。此外,在中间的数字下,它应该显示一个图标(红色矩形)。然而,在我的实现中,父对象、自对象和根对象似乎都具有相同的属性。我的代码出了什么问题?有更好的方法吗 # File name: dialer.kv #:kivy 1.9.0 <Button>: color: .8,.9,0,.65 font_size: 32 <MyGridLayout>: rows: 3 spacing: 10
Kivy
语言文件,它应该模仿拨号程序。此外,在中间的数字下,它应该显示一个图标(红色矩形)。然而,在我的实现中,父对象
、自对象
和根对象似乎都具有相同的属性。我的代码出了什么问题?有更好的方法吗
# File name: dialer.kv
#:kivy 1.9.0
<Button>:
color: .8,.9,0,.65
font_size: 32
<MyGridLayout>:
rows: 3
spacing: 10
GridLayout:
rows: 1
size_hint_y: .40
Label:
text: '12345678901231234567890'
size: self.texture_size
text_size: root.width, None
font_size: 44
halign: 'center'
valign: 'middle'
canvas.before:
Rectangle:
pos: self.parent.center_x - self.width / 2, self.parent.center_y - self.height / 2
source: 'bg.png'
GridLayout:
cols: 3
rows: 4
size_hint_y: .50
spacing: 10
Button:
text: '1'
Button:
text: '2'
Button:
text: '3'
Button:
text: '4'
Button:
text: '5'
Button:
text: '6'
Button:
text: '7'
Button:
text: '8'
Button:
text: '9'
Button:
text: '*'
Button:
text: '0'
Button:
text: '#'
GridLayout:
cols: 2
size_hint_y: .10
spacing: 10
Button:
text: 'Clear'
Button:
text: 'Dial'
self
在画布中使用的变量说明引用的是封闭的小部件类(在本例中是一个标签),而不是像矩形那样的顶点指令。在您的代码中,self.parent.center_x
实际上是GridLayout
的中心,self.width
是标签宽度。为了把你的图像放在标签的中间,你可以手动计算位置:
<MyGridLayout>:
rows: 3
spacing: 10
GridLayout:
rows: 1
size_hint_y: .40
Label:
# ...
canvas.before:
Rectangle:
pos: self.center_x - 50, self.center_y - 50 # default size is 100x100
source: 'test.png'
# ...
:
行数:3
间距:10
网格布局:
行数:1
尺寸提示:40
标签:
# ...
在以下情况之前:
矩形:
位置:self.center_x-50,self.center_y-50,默认大小为100x100
来源:“test.png”
# ...
您还可以按如下方式使用图像小部件:
<MyGridLayout>:
rows: 3
spacing: 10
GridLayout:
rows: 1
size_hint_y: .40
Label:
# ...
Image:
center: self.parent.center
source: 'test.png'
# ...
:
行数:3
间距:10
网格布局:
行数:1
尺寸提示:40
标签:
# ...
图片:
中心:self.parent.center
来源:“test.png”
# ...
Image
是一个小部件,因此现在self
引用它和self。parent
引用标签
,我们可以使用center
属性自动计算位置
<MyGridLayout>:
rows: 3
spacing: 10
GridLayout:
rows: 1
size_hint_y: .40
Label:
# ...
Image:
center: self.parent.center
source: 'test.png'
# ...