散点前绘制无问题偏移Kivy



Kivy的新手,而不是堆栈交换或python的新手。

所以我有一个散射小部件,我想在上面画一个圆圈,然后在上面渲染文本。当我在之后渲染画布时,偏移是好的,但顺序错误;当我在之前渲染画布时时,顺序是好的但偏移错误。我该如何解决这个问题?

main.py

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.scatter import Scatter
from kivy.uix.label import Label
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ListProperty
from kivy.graphics.vertex_instructions import Rectangle, Ellipse, Line
from kivy.graphics.context_instructions import Color
import random
class Node(Scatter):
pass
class main(App):
def build(self):
return Node()
if __name__ == '__main__':
main().run()

main.kv

<Node>:
size_hint: None, None
size: 200,200
canvas.after: #offset good
#canvas.before: #order good
Color:
rgba: 0,0.7,0,0.8
Ellipse:
pos: self.pos
size: self.size
#---Debug---
Color:
rgba: 0,1,0,0.1
Rectangle:
pos: self.pos
size: self.size
Label:
id: text
text: 'foo'
font_size: self.parent.size[0]/3
color: 1,1,1,1
size: self.parent.size
#Debug
canvas:
Color:
rgba: 0,1,0,0.1
Rectangle:
pos: self.pos
size: self.size

这可以通过之前渲染画布并删除位置信息来修复

canvas.before:
Color:
rgba: 0,0.7,0,0.8
Ellipse:
size: self.size
#---Debug---
Color:
rgba: 0,1,0,0.1
Rectangle:
size: self.size

这还具有对缩放和旋转具有鲁棒性的附加效果

最新更新