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

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

传入公开课的url地址,就可以提取课程的信息,这一篇讲解一下如何编写图像化界面。大概思考一下图像化界面需要的内容:

(1)一个标签:显示为:“请输入公开课地址”

(2)一个文本框:用来输入地址

(3)一个按钮:点击用来提取视频信息

(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,也可以运行了。

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

时间: 2024-10-13 02:35:57

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

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

上篇讲到抓取的数据保存到rawhtml变量中,然后通过编码最终保存到html变量当中,那么html变量还会有什么问题吗?当然会有了,例如可能html变量中的保存的抓取的页面源代码可能有些标签没有关闭标签,例如<div>hello</,这样的错误,那么怎么处理呢?接着看下面的代码: soup=BeautifulSoup(html) 其中利用模块BeautifulSoap,可能很方便去整理html源文件内容,这里我写了个小例子,大家看一下,代码如下: html='<html>&l

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

最近准备重温一下算法导论,感谢大网易把MIT算法导论课程全部贴出来,地址为:http://v.163.com/special/opencourse/algorithms.html 在线看时,网速实在太慢,于是决定下载下来,一个一个的下载不是我等IT男所能忍受的,用迅雷抓取吧,不是特别爽,恰巧前两天刚刚看了下python,于是准备自己写个小软件,练练手,正好可以用这个实际的东西,练练python. 好吧,既然是总述,那么我把接下来要讲的东西的整体轮廓都写在这篇里面,所有需要下载的资源也都会在这里贴

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

函数getdownLoadInfo(url)主要实现核心功能:根据url地址,获取课程信息:课程名(courseTitle),课程数目(courseCount),可下载视频数目(videoCount),视频下载链接(videoUrl):不过再讲解之前,需要对编码的相关知识进行说明: #coding:utf-8 关于python编码的问题,的确是个值得研究的问题,因为简直是乱的一塌糊涂,大家可以看一些讲解的文章,这里不做深入讲解,只是给出结论性的东西,方便实际的使用: 1.正因为有了中文,才有了一

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

python程序生成exe文件,使用的是py2exe扩展包,下面写下具体的步骤: 第一步:新建conver2exe.py,内容如下: #coding:utf-8 from distutils.core import setup import py2exe setup(windows=["down163openv1.0.py"]) 其中"down163openv1.0.py "就是要转换的python程序,注意该文件与conver2exe.py在同一个文件夹下面 第二

用python打造网易公开课视频下载软件

主要分为三部分:1.整体要实现的功能.2.贴出程序源代码及exe程序贴图3.各个资源下载地址 第一.整体要实现的功能 1.根据url地址,获取课程视频地址 2.增加图形化界面 3.将python程序,发布为exe文件,这样大家不安装python就可以运行了 4.由于下载文件名字并不是课程名字,所以下载后要能够实现批量重命名(目前1.0版本未实现) 第二.程序源代码及exe程序贴图 1.程序源代码:down163openv1.0.py 1 #coding:utf-8 2 import urllib

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

10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来.希望大家喜欢. 先看程序效果: 01 整体框架 平台:pycharm 关于pygame的安装这里就不在赘述,大家自行上网找合适自己的版本的安装即可.关于pygame模块知识会穿插在下面代码中介绍,用到什么就介绍什么.这里就不统一介绍了. 整个程序由于是调用了大量的pygame里面的库函数,所以也非常简单(卧槽你这不是调包侠嘛).也就

手把手教你搭建Python虚拟环境,还不会赶紧收藏学习哦!

不同的python项目可能会用到不同的包,而不同的包或不同的python版本之间可能存在冲突.因此,为每个项目创建不同的虚拟环境非常有用.它可以保证一个项目只访问,它所在虚拟环境下安装的包,保持全局解释器的干净整洁,而且由于环境是独立的,因此不需要超户权限. 创建虚拟环境的方式一般有以下几种. 一种是自Python 3.3增加的用于创建虚拟环境的venv标准库.使用这种方法会在指定目录下,创建一个指定虚拟环境名字的文件夹. 像下面这样,在我创建了一个名为 vir1 的虚拟环境后,产生了一个对应的

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

手把手教你把Python应用到实际开发 不再空谈语法 1. 字典推导(Dictionary comprehensions)和集合推导(Set comprehensions) 大多数的Python程序员都知道且使用过列表推导(list comprehensions).如果你对list comprehensions概念不是很熟悉——一个list comprehension就是一个更简短.简洁的创建一个list的方法. >>> some_list = [1, 2, 3, 4, 5] >&

手把手教你使用Python抓取QQ音乐数据!

[一.项目目标] 通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 通过手把手教你使用Python抓取QQ音乐数据(第二弹)我们实现了获取 QQ 音乐指定歌曲的歌词和指定歌曲首页热评. 通过手把手教你使用Python抓取QQ音乐数据(第三弹)我们实现了获取更多评论并生成词云图. 此次我们将将三个项目封装在一起,通过菜单控制爬取不同数据. [二.需要的库] 主要涉及的库有:requests.openpyxl.