python - Kivy Tree View 如何保存用户的选择?
问题描述
我有一个带有树视图的程序,当他按下其中一个标签时,我想使用客户端选择。该程序基于客户端-服务器,但其余代码不相关。file_system 对象是 CloudSystem 类型,CloudSystem 类创建提供路径的字典。
.py 文件
class CloudSystem:
def __init__(self, cloud_path):
self.root = cloud_path
self.cloud_tree = {}
self.current_dict = self.cloud_tree
self.current_dict[os.path.basename(self.root)] = {}
self.cloud_tree = self.create_cloud( self.root)
def create_cloud(self, root_dir):
dir = {}
root_dir = root_dir.rstrip(os.sep)
start = root_dir.rfind(os.sep) + 1
for path, dirs, files in os.walk(root_dir):
folders = path[start:].split(os.sep)
subdir = dict.fromkeys(files)
parent = reduce(dict.get, folders[:-1], dir)
parent[folders[-1]] = subdir
return dir
def to_string(self):
print(self.cloud_tree)
def get_tree(self):
return self.cloud_tree
def populate_tree_view(tree_view, parent, node):
if node is not None:
if parent is None:
for key in node:
tree_node = tree_view.add_node(TreeViewLabel(text=key,
is_open=False))
if node[key] is not None:
populate_tree_view(tree_view, tree_node, node[key])
else:
for key in node:
tree_node = tree_view.add_node(TreeViewLabel(text=key,
is_open=False), parent)
if node[key] is not None:
populate_tree_view(tree_view, tree_node, node[key])
class CloudView(Screen, FloatLayout):
def __init__(self, **kwargs):
super(CloudView, self).__init__(**kwargs)
self.tv = TreeView(root_options=dict(text='My Cloud'),
hide_root=False,
indent_level=4, )
populate_tree_view(self.tv, None, self.show_cloud())
self.add_widget(self.tv)
def show_cloud(self):
s.send('CLOUD'.encode('utf-8'))
file_system = pickle.loads(s.recv(4096))
return file_system.get_tree()
def on_selection(self):
pass
.kv 文件
<CloudView>:
name: "cloud"
id: cloud_view
解决方案
推荐阅读
- nodes - 如何在使用 nodejs 14 安装 Cypress v6.6 时修复丢失的文件夹“cypress”
- angular - 如何使用 Ionic 框架添加自动 OTP 验证功能?
- java - 如何处理大型 http JSON 响应体
- tensorflow - 我应该在 tensorflow.keras 中使用哪种类型的 input_shape?
- go - 如何使用 swagger 在 Swagger UI 中隐藏模型区域?
- r - 如何计算 R 中数值变量和分类变量的描述性统计量?
- java - SPIGOT:调用非静态方法而不重新初始化插件
- app-store-connect - iTunes 查找 api 不适用于语言或国家代码?
- node.js - 更新 ssl 证书如何导致节点永远停止?
- powershell - 从共享邮箱获取 SMTP 和显示名称 - 添加到已经工作的脚本