首页 > 代码库 > 手把手教你用python打造网易公开课视频下载软件4-图形化界面

手把手教你用python打造网易公开课视频下载软件4-图形化界面

上一篇讲解完函数:def getdownLoadInfo (url):

传入公开课的url地址,就可以提取课程的信息,这一篇讲解一下如何编写图像化界面。大概思考一下图像化界面需要的内容:
(1)一个标签:显示为:“请输入公开课地址”
(2)一个文本框:用来输入地址
(3)一个按钮:点击用来提取视频信息
(4)一个标签和多行文本框,其中标签用来显示课程信息,多行文本用来显示下载链接
完成后的效果图如下:
手把手教你用python打造网易公开课视频下载软件4-图形化界面 - 吴广磊 - 吴广磊
 
 
我们先贴出代码:

 

 

 #创建APP
    app=wx.App(False)
  #创建frame窗口
    frame=wx.Frame(parent=None,title=u‘下载网易公开课v1.0‘,size=(800 ,600 ),style=wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX)
    frame.Center()
    #创建Menu
    menuBar=wx.MenuBar()
    menu1=wx.Menu()
    menuBar.Append(menu1,u"文件")
    #创建工具栏
    toolbar=frame.CreateToolBar()
    #创建Panel
    panel=wx.Panel(frame)
    panel.SetBackgroundColour(‘white‘)
    
    label=wx.StaticText(panel,label=u ‘请输入公开课地址:‘ )
    font=wx.Font(13,wx.DECORATIVE,wx.NORMAL,wx.NORMAL)
    label.SetFont(font)
    
    text=wx.TextCtrl(panel,size=( 700,- 1))
    
    button=wx.Button(panel,label=u ‘提取下载地址‘ )
    button.SetFont(font)
    frame.Bind(wx.EVT_BUTTON,showInfo, button)
    labelInfo=wx.StaticText(panel,size=(- 1, 50))
    textArea=wx.TextCtrl(panel,style=wx.TE_MULTILINE,size=(700 ,300 ))
    #用sizer控制界面
    sizer=wx.FlexGridSizer(cols= 1,vgap= 10)
    sizer.AddMany([label,text,button,labelInfo,textArea])
    panel.SetSizer(sizer)
    
    # #创建状态栏
    statusBar=frame.CreateStatusBar()
 
    frame.Show(True)
    app.MainLoop()
实现图像化界面有很多扩展的库,这里我们使用的是wxpython,建议大家略读一下wxpython in action,下面讲解一下各行代码的含义:
(1)首先调用wx.App,生成一个app对象,注意wxpython必须要有一个app对象
(2)生成一个Frame,一个Frame相当于一个窗口,也是wxpython必须的。
(3)添加所需要的标签(label),文本框(textCtrl)和按钮(Button)(这些控件都不能直接加在Frame上面,需要加在Panel上面,而Panel需要加在Frame上面)点击按钮触发showInfo方法,后面讲解
(4)通过sizer来控制布局,也类似于Java中的布局管理器,这里使用FlexGridSizer布局,定义为1列(cols=1)
下面讲解一下showInfo方法,先贴出代码:

 

 

def showInfo(event):
#     url=r"http://v.163.com/special/opencourse/algorithms.html"
    textArea.SetValue("")
    url=text.GetValue()
    courseTitle,courseCount,videoCount,videoUrl=getdownLoadInfo(url)
    labelInfo.SetLabel(u‘课程名称:‘+courseTitle+ ‘\n‘+u ‘,课程总集数:‘ +unicode(courseCount)+‘\n‘+u‘,可下载集数:‘+unicode(videoCount))
    for value in videoUrl:
        textArea.AppendText(value+ ‘\n‘)
功能很简单,点击按钮,将地址文本框的内容传入getdownLoadInfo(url)中获取课程信息,然后将信息显示在label和文本框中。
至此,一个小的程序讲完了,如果电脑上安装有python2.7,那么可以直接运行,由于是练习用,界面做的很粗糙,功能也比较简单,对一些异常也没有进行判断,权当简单的练下手,以后遇到类似的问题,可以很快的解决。
下一篇讲解一下如何生成exe文件,这样在windows环境下,不安装python,也可以运行了。