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

传入公开课的url地址,就可以提取课程的信息,这一篇讲解一下如何编写图像化界面。大概思考一下图像化界面需要的内容:
(1)一个标签:显示为:“请输入公开课地址”
(2)一个文本框:用来输入地址
(3)一个按钮:点击用来提取视频信息
(4)一个标签和多行文本框,其中标签用来显示课程信息,多行文本用来显示下载链接
完成后的效果图如下:
 
我们先贴出代码:
 #创建APP
    app=wx.App(False)
  #创建frame窗口
    frame=wx.Frame(parent= , ),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(,wx.DECORATIVE,wx.NORMAL,wx.NORMAL)
    label.SetFont(font)
    
    text=wx.TextCtrl(panel,size=( ,- ))
    
    button=wx.Button(panel,label=u '提取下载地址' )
    button.SetFont(font)
    frame.Bind(wx.EVT_BUTTON,showInfo, button)
    labelInfo=wx.StaticText(panel,size=(- , ))
    textArea=wx.TextCtrl(panel,style=wx.TE_MULTILINE,size=( , ))
    #用sizer控制界面
    sizer=wx.FlexGridSizer(cols= ,vgap= )
    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,也可以运行了。

(完)

文档信息

手把手教你用python打造网易公开课视频下载软件4-图形化界面的更多相关文章

  1. 手把手教你用python打造网易公开课视频下载软件1-总述

    写作前面的话:最近准备重温一下算法导论,感谢大网易把MIT算法导论课程全部贴出来,地址为:http://v.163.com/special/opencourse/algorithms.html,在线看 ...

  2. 手把手教你用python打造网易公开课视频下载软件2-编码相关说明

    函数getdownLoadInfo(url)主要实现核心功能:根据url地址,获取课程信息:课程名(courseTitle),课程数目(courseCount),可下载视频数目(videoCount) ...

  3. 手把手教你用python打造网易公开课视频下载软件5-python生成exe程序

    python程序生成exe文件,使用的是py2exe扩展包,下面写下具体的步骤: 第一步:新建conver2exe.py,内容如下: #coding:utf-8 from distutils.core ...

  4. 手把手教你用python打造网易公开课视频下载软件3-对抓取的数据进行处理

    上篇讲到抓取的数据保存到rawhtml变量中,然后通过编码最终保存到html变量当中,那么html变量还会有什么问题吗?当然会有了,例如可能html变量中的保存的抓取的页面源代码可能有些标签没有关闭标 ...

  5. 【python】10分钟教你用python打造贪吃蛇超详细教程

    10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来.希望大家喜欢. 先看程序效果: 0 ...

  6. 手把手教你吧Python应用到实际开发 不再空谈悟法☝☝☝

    手把手教你吧Python应用到实际开发 不再空谈悟法☝☝☝ 想用python做机器学习吗,是不是在为从哪开始挠头?这里我假定你是新手,这篇文章里咱们一起用Python完成第一个机器学习项目.我会手把手 ...

  7. 手把手教你用Python搭建自己的量化回测框架【均值回归策略】

    手把手教你用Python搭建自己的量化回测框架[均值回归策略] 引言 大部分量化策略都可以归类为均值回归与动量策略.事实上,只有当股票价格是均值回归或趋势的,交易策略才能盈利.否则,价格是随机游走的, ...

  8. 手把手教你吧Python应用到实际开发 不再空谈悟法✍✍✍

    手把手教你吧Python应用到实际开发 不再空谈悟法 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问 ...

  9. 手把手教你把Python应用到实际开发 不再空谈语法

    手把手教你把Python应用到实际开发 不再空谈语法 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问 ...

随机推荐

  1. js简化判断是否为手机访问

    var ua = navigator.userAgent; var ipad = ua.match(/(iPad).*OS\s([\d_]+)/), isIphone = !ipad &&am ...

  2. git 命令大全

    git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --glob ...

  3. lua 位运算

    bit = {data32={}} , do bit.data32[i] = ^(-i) end function bit:d2b( arg ) local num = tonumber( arg ) ...

  4. JS命名空间实例

    var types = new MeetingList.EventList(msg); $(".divclass").html(types.Build(new Date($(&qu ...

  5. home键通知

    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("closeAlert"), n ...

  6. knapsack problem 背包问题 贪婪算法GA

    knapsack problem 背包问题贪婪算法GA 给点n个物品,第j个物品的重量,价值,背包的容量为.应选哪些物品放入包内使物品总价值最大? 规划模型 max s.t. 贪婪算法(GA) 1.按 ...

  7. Windows Phone 8.1 新特性 - 常用的启动器

    本篇为大家介绍一下 Windows Phone 8.1 中部分常用启动器的实现方式.分别是 呼叫电话.发送短信.发送邮件.添加约会到日历.启动地图.地图路线显示.地图下载 和 地图更新. 1. 呼叫电 ...

  8. php面向对象学习

    近期跟着别人开发一套php程序,深感自己面向对象很白痴,于是再次巩固了一下面向对象的学习,自己整理了一下这几天面向对象的东西,给大家分享!! 面向对象的三大特性: 封装 -- 隐藏内部实现,稳定外部接 ...

  9. 第53讲:Scala中结构类型实战详解

    今天学习了scala的结构类型,让我们看看代码 class Structural {def open() = print("A class interface opened") } ...

  10. 在android 6.0(API 23)中,Google已经移除了移除了Apache HttpClient相关的类

    推荐使用HttpUrlConnection,如果要继续使用需要Apache HttpClient,需要在eclipse下libs里添加org.apache.http.legacy.jar,androi ...