这一篇教程,我们在之前已编写模块的基础上,通过wxPython实现GUI图形界面的客户端。
一、导入模块
我们需要导入之前server模块和client模块中实现的一些类和方法,另外还需要导入wx模块。
示例代码:
想要学习Python?Python学习交流群:984632579满足你的需求,资料都已经上传群文件,可以自行下载! pclient random_string
pserver Node UNHANDLED
xmlrpcclient ServerProxy Fault
threading Thread
time sleep
wx
sys
二、创建变量
变量与CMD客户端是一样的。
示例代码:
HEAD_START SECRET_LENGTH
三、定义客户端类(Client)
在这个类中,我们需要完成以下三个方面:
服务器、服务器代理以及GUI界面初始化。
定义GUI图形界面。
定义下载事件的处理方法。
示例代码:
wxApp self url_file dir_name url
self
self event
接下来,就逐一完成这些内容。
1、定义构造方法。
在构造方法中主要是启动GUI图形界面、启动服务器以及创建服务器代理对象。
这里需要注意的是,通过超类对象启动GUI界面。
示例代码:
wxApp self url_file dir_name url
Client self__init__
selfsecret random_stringSECRET_LENGTH
node Nodeurl dir_name selfsecret
thread Threadtargetnode_start
threadsetDaemon
threadstart
sleepHEAD_START
selfserver ServerProxyurl
line url_file
selfserverhellolinestrip
2、重写初始化GUI界面的方法。
这一部分内容大家可以参考之前我们讲过的wxPython部分。
示例代码:
self window wxFrame title size
background wxPanelwindow
selfuser_input user_input wxTextCtrlbackground
submit wxButtonbackground label size
submitBindwxEVT_BUTTON selffetchHandler
hbox wxBoxSizer
hboxAdduser_input proportion flagwxALL wxEXPAND border
hboxAddsubmit flagwxTOP wxBOTTOM wxRIGHT border
vbox wxBoxSizerwxVERTICAL
vboxAddhbox proportion flagwxEXPAND
backgroundSetSizervbox
windowShow
3、定义下载事件的处理方法。
点击下载按钮时的事件由这个方法进行处理,主要是调用服务器代理对象的fetch()方法。
示例代码:
self event filename selfuser_inputGetValue
selfserverfetchfilename selfsecret
Fault f
ffaultCode UNHANDLED
filename
四、定义与启动主程序
主程序依然通过命令行启动。
示例代码:
url_file dir_name url sysargv
client Clienturl_file dir_name url
clientMainLoop
__name__
main
到这里我们就完成了一个简单的GUI客户端的编写。
同样通过命令行启动多个客户端,然后尝试通过文件名下载文件。
还没有评论,来说两句吧...