Я пытаюсь создать приложение с древовидным представлением. Мне удалось объединить два макета с плавающей запятой, но я не смог их правильно выровнять. Я был бы очень признателен, если бы кто-то мог взглянуть на код и сообщить мне, где я делаю неправильно. В приведенном ниже коде вы найдете «Поиск учащихся» в виде дерева вверху. Я пытаюсь поместить это ниже кнопки «Класс 1». Любая помощь будет высоко оценена!
Код main.py
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.core.image import Image as CoreImage
from kivy.uix.treeview import TreeViewLabel, TreeView
def populate_tree_view(tree_view, parent, node):
if parent is None:
tree_node = tree_view.add_node(TreeViewLabel(text=node['node_id'],
is_open=False))
else:
tree_node = tree_view.add_node(TreeViewLabel(text=node['node_id'],
is_open=False), parent)
for child_node in node['children']:
populate_tree_view(tree_view, tree_node, child_node)
tree = {'node_id': 'Student Search','children':[{'node_id':'Number 1 ABC','children':[]},{'node_id':'Number 2 XYZ','children':[]},{'node_id':'Number 4 IJK','children':[]}]}
class TreeWidget(FloatLayout):
def __init__(self, **kwargs):
super(TreeWidget, self).__init__(**kwargs)
tv = TreeView(root_options=dict(text='Users'),
hide_root=True,
indent_level=10)
populate_tree_view(tv, None, tree)
self.add_widget(tv)
class MainLayout(FloatLayout):
pass
class HomePageApp(App):
def build(self):
return MainLayout()
if __name__ == '__main__':
HomePageApp().run()
Вот кв файл
################# this button will be used for float layout #############################
#<LogoButton@Button>:
# size_hint: .1, 0.1
# background_normal: 'logo.jpg'
# background_down: 'logo.jpg'
<Button@Button>:
font_size: 15
color: 1,1,1,1
size_hint: 0.32, 0.07
<Page@Button>:
font_size: 25
background_color: 0,0,0,0
color: 1,1,1,1
size_hint: .96, 0.1
<TreeWidget>:
font_size: 40
##########################################################################################
<MainLayout>:
treetest: treeview
Button:
text:"Class 1"
pos_hint: {'x': 0.025, 'y':.8}
Button:
text:"Class 2"
pos_hint: {'x': 0.345, 'y':.8}
Button:
text:"Class 3"
pos_hint: {'x': 0.665, 'y':.8}
Page:
text:"Home Page"
pos_hint: {'x': 0.025, 'y':.9}
#LogoButton:
# pos_hint: {'x': 0.025, 'y':.9}
TreeWidget:
id:treeview
pos_hint: {'x': 0, 'y':0}
```
Вы можете передать pos_hint
при объявлении своего TreeView
, чтобы указать, где вы хотите.
Поэтому попробуйте это вместо этого:
tv = TreeView(root_options=dict(text='Users'),
hide_root=True,
indent_level=10,
pos_hint = {'x': 0.025, 'top': 0.75})