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

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

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

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

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

这个项目较小,因为需要的大部分功能都已经在上一个项目中编写好了。在这个项目中,你将看到给既有Python程序添加GUI非常容易。

1.问题描述

在这个项目中,我们将扩展之前编写的文件共享系统:添加GUI客户端,让它使用起来更容易。这意味着可能有更多的人选择使用它。(当然,这个程序的主旨是让用户能够共享文件。)这个项目的第二个目标是展示当程序模块化程度足够高后,扩展起来将非常容易。(这也是使用面向对象编程的原因之一。)

这个GUI必须满足如下需求。

  • 允许用户输入文件名,并将其提交给服务器的方法fetch。
  • 列出服务器的文件目录当前包含哪些文件。

就这些。由于系统的大部分功能已经实现,GUI部分是一个相对简单的扩展。

2.有用的工具

除之前使用的工具外,还需要使用大部分Python版本都自带的工具包Tkinter。如果你想使用其他GUI工具包,可以尽管去用。这个项目将让你对如何使用喜欢的工具实现功能有个大致的认识。

3.准备工作

开始这个项目前,应准备好前一个项目程序,并像前一节指出的那样安装一个GUI工具包。除此之外,这个项目无需做其他的准备工作。

4.初次实现

这个客户端提供了一个界面(方法fetch),用户可通过它来访问服务器的功能。下面来看一下与GUI相关的代码。

之前的客户端是cmd.Cmd的子类,现在的客户端是tkinter.Frame的子类。虽然并非必须从tkinter.Frame派生出子类(你可以创建完全独立的Client类),但这是一种比较自然地编码组织方式。与GUI相关的设置工作是在一个独立的方法中完成的,这个名为create_widgets的方法被称为构造函数。它创建一个用于输入文件名的的文本框(Entry)以及一个用于获取指定文件的按钮(Button),其中的按钮操作被设置为方法fetch_handler。这个事件处理程序很像之前的do_fetch,它获取self.input(文本框)中的查询,并在一条try/except语句中调用self.server.fetch。

初次实现的源代码如图所示。

除前面解释过的相对简单的代码外,这个GUI客户端的工作原理和之前基于文本的客户端相同,使用方式也类似。要运行这个程序,需要指定包含URL的文件、要共享的文件所在的目录以及节点的URL,如下所示:

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

请注意,文件urlfile.txt必须包含其他一些节点的URL,这样这个程序才能发挥作用。为进行测试,可在同一台计算机上启动多个程序(使用不同的端口号),也可在不同的计算机上运行它们。下图显示了这个客户端的GUI。

这个实现管用,但只实现了部分功能——它还应列出服务器文件目录包含的文件。为此,必须对服务器(节点)本身进行扩展。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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