我的kv文件的一部分如下所示,我想在ShowRectangle的画布上画线。
但是,我遇到了以下问题。
小部件" ParentOfShowRectangle"将BoxLayout的高85%提供给" ShowRectangle",将低15%提供给某些按钮。
" ShowRectangle" Scatter of" ShowRectangle"适当地渲染到上限85%。但是,canvas.after中的Lines不会在屏幕的上部85%内绘制,而是与较低的15%(按钮)相交。即使这样,它们也具有正确的长度等(按比例缩放85%)。
看起来,天气只是错过了坐标系的适当偏移15%。 错误选择的坐标系可能会出现问题吗? 我无法弄清楚原因。
ShowRectangle继承自BoxLayout。 ParentOfShowRectangle继承自Screen。
kv文件
<ShowRectangle>:
canvas.after:
Line:
width: 3
points: self.size[0] * 0.05, self.size[1] * 0.05, self.size[0] * 0.05, self.size[1] * 0.95, self.size[0] * 0.95, self.size[1] * 0.95, self.size[0] * 0.95, self.size[1] * 0.05
close: True
Scatter:
pos: self.pos
size: self.size
size_hint: 1, 1
<ParentOfShowRectangle>:
BoxLayout:
orientation: 'vertical'
ShowRectangle:
size_hint: 1, 0.85
size: 1, 0.85
BoxLayout:
orientation: 'horizontal'
size_hint: 1, 0.15
height: 1, 0.15
Button:
text: 'Cancel.'
font_size: root.button_font_size
size_hint: 1, 0.6
height: ...
Button:
text: 'Ok.'
font_size: root.button_font_size
size_hint: 1, 0.6
height: ...
答案 0 :(得分:0)
找到使用self.center进行相对定位的解决方案:
self.center[0]-self.size[0] * 0.45, self.center[1]-self.size[1] * 0.45, \
self.center[0]+self.size[0] * 0.45, self.center[1]-self.size[1] * 0.45, \
self.center[0]+self.size[0] * 0.45, self.center[1]+self.size[1] * 0.45, \
self.center[0]-self.size[0] * 0.45, self.center[1]+self.size[1] * 0.45