前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用GUI共享文件(2):再次实现

使用GUI共享文件(2):再次实现

作者头像
不可言诉的深渊
发布2019-07-26 16:47:19
8980
发布2019-07-26 16:47:19
举报
文章被收录于专栏:Python机器学习算法说书人

使用XML-RPC共享文件(1):初次实现

使用XML-RPC共享文件(2):再次实现

使用GUI共享文件(1):初次实现

5.再次实现

第一个原型非常简单,他确实实现了文件共享功能,但对用户不太友好。如果用户能够知道有哪些文件可用(这些文件可能是程序启动时就位于文件目录中,也可能是后来从其他节点那里下载的),将大有裨益。再次实现将实现这种列出文件的功能。

要保护节点包含的文件的列表,必须添加一个方法。你可以像对待方法fetch那样使用密码来保护这个方法,但让任何人都可以使用它很有用,而且不会带来任何安全风险。对对象进行扩展很容易——只需从它派生出子类即可。因此,你从Node类派生出子类ListableNode,并在其中新增一个方法list,它调用方法os.listdir来返回一个列表,其中包含指定目录中的所有文件。

为访问这个服务器方法,在客户端中添加方法update_list。

属性self.files指向一个列表框,这个列表框是在方法create_widgets中添加的。在方法create_widgets中创建列表框时,调用了方法update_list。另外,每次调用fetch_handler时,也调用了方法update_list(因为调用fetch_handler可能导致文件列表发生变化)。

就这么简单。至此,你创建了一个支持GUI的P2P文件共享程序,要运行它,可使用如下命令:

python guiclient.py urlfile.txt files/ http://localhost:8000

下图显示了最终的GUI客户端。

当然这个程序存在很大的扩展空间。有关这方面的建议,请参阅下一节。除这些建议外,你还可充分发挥自己的想象力。

6.进一步探索

之前的项目提出了一些有关如何对文件共享系统进行扩展的建议,这里再列出一些。

  • 让用户选择要获取的文件,而不是输入其文件名。
  • 添加一个状态栏,在其中显示诸如Downloading或Couldn't find file foo.txt等消息。
  • 想办法让节点能够共享“好友”。例如,两个节点彼此认识后,它们都可将自己认识的节点介绍给对方。另外,也可让节点在关闭前将其知道的节点都告知所有的邻居。
  • 在GUI中添加一个显示已知节点(URL)的列表,让用户能够添加新的URL并将其保存到URL文件中。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python机器学习算法说书人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档