【发布时间】:2020-12-22 01:59:16
【问题描述】:
我正在尝试在标签上显示二叉树。如何在每个标签内从中心到左右边缘绘制线条?这个任务很奇怪,我理解,但是你我需要用最基本的 Kivy 对象展示一个自写的树。不能使用基维树。互联网上的所有解决方案都只针对触摸屏。
在这个循环中,我添加带有节点值的标签,如果未找到节点,则为 0
class TreeApp(App):
def build(self):
bl = BoxLayout(orientation='vertical', padding=5, spacing=5)
for i in range(maxdepth):
inside_bl = BoxLayout(orientation='horizontal')
for j in range(2 ** i):
try: inside_bl.add_widget(Label01(text=str(mx_lvl[i][j]),color=(0.5,0.5,0.5,1)))
except: inside_bl.add_widget(Label111(text="0",color=(0.5,0.5,0.5,0.5)))
bl.add_widget(inside_bl)
return bl
在这里,我尝试创建类 label01。我想用自我。将为每个标签创建自己的线,并相对于标签的原点或中心进行绘制。
class Label01(Label):
def __init__(self,**kwargs):
super(Label01,self).__init__(**kwargs)
with self.canvas:
self.pos = self.pos
Color(0,1,0,1)
self.line= Line(points=(self.x+100,self.y+100,self.x+250,self.y+250),close = True)
标签 111 也是如此。我想使用 self.将为每个标签创建自己独特的线条,并相对于标签的原点或中心进行绘制。
- tree.kv
#:kivy 1.11.1
<Label111>:
canvas.before:
Line:
width: 2
points: (self.x, self.y+50, self.x+200, self.y+100, self.x+300, self.y+200)
Color:
rgb: (0.9,0.9,0.9,0.9)
- main.py:
class Label111(Label):
pass
我在使用 self.我将在每个标签内获得一条测试线(总共 31 条),但我在窗口底部只有 2 条线。问题:如何在每个标签内相对于其中心绘制两条线?
【问题讨论】: