当前课程知识点:Python 交互式程序设计导论 >  第2周 >  A 课程视频(Python交互式应用) >  SimpleGUITk

返回《Python 交互式程序设计导论》慕课在线视频课程列表

SimpleGUITk在线视频

SimpleGUITk

下一节:按钮

返回《Python 交互式程序设计导论》慕课在线视频列表

SimpleGUITk课程教案、知识点、字幕

同学们,大家好

欢迎来到Python交互式程序设计导论MOOC课堂

这一讲呢主要给大家介绍SimpleGUITk

实际上SimpleGUITk

也是用Python语言编写的一个模块包

我们在前面的视频

Windows平台安装Python开发环境

还有在mac平台安装Python开发环境

这两个视频里头已经介绍过

如何安装SimpleGUITk

当然你要保证现在你的计算机安装了SimpleGUITk

我们才能使用它

这一讲,我们通过演示来告诉大家如何使用SimpleGUITk

进行交互式程序设计,进行游戏的开发

好,现在请看我们的演示

好,首先创建一个项目它的名称叫SimpleGUITk演示

然后打开项目管理器

我们建一个Python程序文件

叫SimpleGUITkDemo,确认

要使用SimpleGUITk这个模块包我们首先要导入它

import因为它的名字比较长

我们可以给它起个别名,jui

但这个别名你自己可以起成你喜欢的

但是建议它的含义是明确的

比如gui代表的是图形用户界面

好了,后面我们的代码就可以直接使用这个别名gui

好,首先我们用gui来创建一个舞台

可以看到它有123 4个参数

第一个是舞台的标题

第二个是画板的宽度

第三个是画板的高度

第四个参数是控制面板的宽度,

好,先是标题,SimpleGuoiTk演示

画板的宽度400个像素

画板的高度400个像素

最后一个参数它默认的是200

我们就可以不给它提供参数

好,我们把创建的舞台赋到一个变量里stage

好,现在来运行,没任何反应

并没有出现一个窗口,也没有出现一个舞台

是因为我们还没启动它,stage.start

好,再来运行

这时候可以看到有一个窗口出现了

这个窗口呢就是我们所说的舞台或者窗口框架

注意看一下它的标题,就是 SimpleGuoiTk演示

就是我们这里提供的第一个参数

而第二个参数400和第三个参数400

决定了画板的大小,就是这个黑色区域

舞台的右侧这个区域

左侧这个区域是我们这个舞台的控制面板

好,接下来为这个舞台增加标签,stage.add_label

好,现在运行一下看一看

好,在控制面板这里出现了我们刚才添加的这个标签

这是控制面板的区域,和这里是一模一样的

好,接下来呢我们为控制面板添加按钮。

Stage?add-button()。

可以看到按钮上面显示的文字是第一个参数,

按钮,当鼠标点击以后响应的函数是第二个参数,

第三个参数是按钮的宽度。

第一个参数,假设上面现实的是“重新开始”

那么这个按钮鼠标点击下去以后执行的是哪个函数呢?

我们假设叫restart,宽度是多少呢,假如说是50个像素,

现在注意到这个restart是红色的下划线标志,说明是有错误,

它的本质的含义就是这个函数还不存在,所以它会这样子显示,那么我们来定义这个函数

def函数名括号,然后冒号,这是定义函数的必须的语法结构,

为了表明我们点击下去以后这个函数被执行让这个函数输出,一些信息

好,现在我们关掉这个重新来运行,

注意看一下我们这里出现的一个重新开始按钮和这个一模儿一样的

我们点击一下,在下面,注意啊,就这个控制台输出了你点击了重新开始按钮

正式我们这个函数操作的结果,而宽度是50个像素,由这个参数指定

接下来,我们为控制面板那里添加文本输入框,好,怎么来添加呢

Stage?add-input一样,它也有提示信息,和,当用户完成输入以后打回车

这么函数来进行处理,以及这个输入框的宽度

假设我们的提示信息是第二个参数是输完的结果怎么处理,用哪个函数来处理

假如说(my-input-handler,50)第三个参数宽度也是50

一样这个my-input-handler这个函数上现在是不存在的,所以它是提示有错误信息,我们可以定义这个函数

注意这个函数呢是有一个参数的的,就是用户输入的那个值

我们也给它写一点代码,让输入的结果显示在控制台

你输入的内容为“”,参数传过来的值。

现在来运行,这里有一个输入框,提示信息室输入一个数字,假设我们输了个80,打回车

看,输出的结果,你输入的内容为:80

接下来呢程序为我们添加键盘响应时间,

Stage?set 也就是设置键盘响应时间,那键盘响应时间有两种情况

一种是键盘上面的键被按下,还有一种是释放这个按键

我们先看键盘上的键被按下这种情况,

好,这需要我们提供一个函数来处理,当键盘上的键按下以后做什么

假设我们这个函数名字叫key-down

同样,这个函数是不存在的,我们要去定义它

注意,这个函数也会有个参数叫key

这个参数传回来的是用户按下的具体是哪一个键

我们来判断

好,假设我们要处理用户按下上箭头,上箭头是up

那我们做点什么呢,暂时为了保证程序不出错,我们先填一个pass

我们的设计一个辅助函数,这个辅助函数能够发出声音

我们定义一个语音合成函数,它的参数是一个text

作用是把这个text里头所代表的内容用语音的形式让计算机说出来,

我们调用system函数里面的一个功能,就是让它说出来,说什么东西呢,后面的内容

现在我们这里就要用它了,怎么用呢tts

让它说什么呢,说“你按下了下箭头”

好,试一下,有什么结果

好,up按下来,你按下了上箭头

再运行

好,我们接着如果要对其它的按键也要进行处理,那就继续来

好,如果我们还要处理按下了w,按下了x

好,继续添加到这里

按下w呢,“你按下了w”

按下了x呢,“你按下了x”

好,现在运行

现在我们按x键

按w,按上箭头

按下箭头

可以看到这就是键盘事件处理函数的基本的模式

当然键盘呢还有很多键,我们可以一一做处理

实际上我们在游戏当中不可能每一个键都会用到,

因此这里的处理不会对所有的键都做处理

好,接下来我们来添加键盘的按键释放以后的要处理的情况

我们假如说用key-up 这个函数来处理键盘按键释放的这个事件

当然我们也要定义这个函数

好,把所有的这些代码复制下来

只不过这里呢就不是你按下了是释放了

好,我们再来运行

先按下上箭头

把它放开

按住上下的箭头,放开

好的,接下来我们为我们的程序添加绘制图像的功能

怎么添加呢

好,这里要提供一个绘图函数

注意看,这里也在提示有问题,因为这个函数我们没有定义,所以要去定义这个函数

好,它也需要有一个参数,就是画板,

那在这个函数当中我们想画点什么呢

假设我们要在在画板的正中央画一个圆

好,先看这个圆的圆心位置

Center=它的位置,x坐标和y坐标,200,200

因为画板的高度是200

Canvas.draw_circle这是这个圆的圆心,第一个参数

第二个参数是半径,第三个参数是线的宽度是2

第四个参数是线的颜色叫做yellow

第五个参数是填充的颜色,红色

好,现在我们来运行

在正中间画了一个半径为50像素

线的颜色是黄颜色,线的粗细是两个像素

中间的填充是红颜色的

绘图就是这么简单

好,下面我们再看

为它添加时钟时间

怎么来添加时钟时间

创建一个时钟时间

Gui.create_timer这里有两个参数,第一个时钟事件多少时间发生一次

1000毫秒,每1秒钟发生一次时钟事件

当这个时钟事件发生以后

用什么来处理,用什么函数来处理

假设发生以后我们用

My.timer_hander来处理

同样这个函数是没有定义的,所以它会提示这样的信息

Def pass

这时候呢,我们应该把这个创建的时钟事件保存在一个变量里面后面才能使用它

假如保存到catch,W-A-T-C-H这个变量里面

现在看看我们在这个时钟事件处理函数要做什么事情

才能展示这个时钟事件,它确实发生了,而且我们的函数也处理了它

下面我们再声明一个变量

计数器count=0初始值是0

然后到这里

将这个变量设置为全局变量

然后呢,时钟事件每发生一次,我们让这个计时器增加1

好,现在我们把它输出到控制台去

这时我们看执行有没有效果,运行

注意看控制台并没有信息输出

是因为我们这个时钟事件还没有启动

.start,注意啊,时钟事件的启动要先于舞台事件,框架事件启动

我们现在来执行

注意看这里有输出

每隔一秒钟,输出一次,并且计时数器在增加

这就是时钟事件

好,现在我们稍微改一下,让圆呢,从左上角开始移动往右上角走

变成一个动画,而不是固定在那里的圆

为了做到这一点怎么来做

好,先看我们的draw函数,就是绘制函数里头

我们把圆心这个变量提出来放到前面

初始值呢是0

这时候意味着一开始圆心的位置在左上角,最左上角

好,接着,在这里

我们让它的横坐标位置

圆心的横坐标的现在位置增加2

纵坐标的位置也增加2

每调用一次我们的绘图函数都要增加圆心的纵坐标和横坐标

每次增加两个像素

好现在来执行

注意它开始动了,对吧

最终我们的演示程序运行效果是这样的

左侧的控制面板上有一个按钮叫重新开始

有一个文本输入框,右侧画板呢我们点击重新开始

一个圆从左上角向右下角移动,同时呢我们点重新开始这个鼠标点击总次数还有鼠标点中圆圈次数恢复成零

我们点击开始,现在点一下

没有点中,点中,可以看到我总共点击了4次鼠标,点中圆圈呢只有一次,

好,我们来看看整个程序,作为一个SimpleGUITk

用这个工具开发的游戏程序呢大体上包括以下几个部分

首先那是导入必要的模块儿包,这是一部分

然后呢我们要定义程序当中要使用的一些全局变量,这是第二部分

紧接着我们要定义一些辅助函数,比如说记事栏计算机,朗读文本的辅助函数

这是计算两个点之间的距离的辅助函数

剩下来我就要定义各种事件的相应函数,然后我们要创建舞台

创建完舞台后我们可以给舞台的控制面板添加

文本标签,然后我们可以给我们的程序注册各种事件

比如说注册按钮事件,注册输入文本框事件,注册键盘按下的事件,注册键盘释放的事件

注册鼠标点击的事件,还有注册绘制图形也就是刷新屏幕的事件,以及注册时钟事件也就是计时器事件,最后呢我们要启动舞台和计时器。

尤其是要先启动计时器后启动舞台

好的,我们再仔细看一下,事件处理的注册,比如说

注册按钮事件我们要指定按钮的现实的文本,要指定一旦按钮按下去调用的函数

名字叫readstart,那么这里对应的就有它的处理函数readstart

我们要指定这按钮的宽度,同样输入文本框也有这些要求

这两个呢,会在控制面板出现

而剩下的键盘按键,和键盘的释放以及鼠标事件的注册

屏幕刷新时间的注册,还有计时器的事件注册在控制面板不会出现任何你看不见的对象

还有就是每个事件发生的时候我们程序对应的函数会被执行

要注意,比如说这个重新开始按钮,这个函数什么时候执行,执行多少次

完全取决于游戏的玩家他什么时候点击了这个开始按钮,点击了多少次

一样输入事件也是,也取决于玩家什么时候在这输入,输入了多少次

键盘也是,按键也是一样,释放键也是一样,鼠标键也是一样

但这里的鼠标键的事件呢只在画布这个区域点击鼠标

而下面的两个事件情况就不同了,比如说

时钟事件,它是固定的间隔自动的来发生这个事件,比如说我们现在是

100呢就是十分之一秒就会自动发生一次,所以这个函数每十分之一秒就会自动被调用一次

如果我们把这里改成1000,意味着这个函数每一秒钟会自动调用一次

上面这个屏幕刷新时间,多长时间会被自动调用一次呢

通常大约是每秒钟六十次,为什么呢,是因为我们的刷新屏它的刷新频率是60赫兹

所以60赫兹就是指每秒钟刷新60次

好的,这是我们用SimpleGUITk编写一个完整游戏的过程

好,谢谢大家,咱们下次再见

Python 交互式程序设计导论课程列表:

第0周

-课程简介

--课程简介

-A 课程视频(算数操作符及表达式)

--绪论

--Python交互式解释器使用方法

--PyCharm集成开发环境介绍

--算数操作符及表达式

-B 课程视频(变量及赋值)

--变量

--项目提交

--“我喜欢Python”热身小项目

-C 辅助视频(计算机结构、Python开发环境安装)

--Windows平台安装Python开发环境

--Mac平台安装Python开发环境

-D 辅助视频(如何提交项目)

--项目提交

-第0周--小测验

-本周项目:"我喜欢Python"

--项目发布、完成、提交及评分流程

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

--项目提交

第1周

-A 课程视频(函数)

--函数

--其它操作符

--随机函数

-B 课程视频(逻辑及表达式)

--逻辑值和比较

--条件

--编程技巧

--“老虎杠子鸡虫”游戏

-第1周--小测验

-本周项目:“老虎杠子鸡虫”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第2周

-A 课程视频(Python交互式应用)

--事件驱动编程

--事件可视化跟踪执行

--SimpleGUITk

--按钮

-B 课程视频(输入框、全局变量)

--输入框

--局部变量和全局变量

--编程技巧

--“猫咪藏在哪个房间”游戏

-第2周--小测验A

-第2周--小测验B

-本周项目:猫咪藏在哪个房间

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第3周

-A 课程视频(画布绘图)

--画布和图形绘制

--字符串处理

--绘图和计时器可视化跟踪执行

--图片和音效

-B 课程视频(计时器)

--计时器

--交互式绘图

--“神奇时钟”游戏

--编程技巧

-第3周--小测验A

-第3周--小测验B

-本周项目:“神奇时钟”

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第4周

-A 课程视频(列表)

--列表

--键盘输入

--列表及变化可视化跟踪执行

--碰撞和反射

-B 课程视频(键盘控制)

--速度控制

--运动

--编程技巧

--“桌上冰球”游戏

-第4周--小测验A

-第4周--小测验B

-本周项目:“桌上冰球”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第5周

-A 课程视频(鼠标输入、列表进阶)

--鼠标输入

--Video

--Video

--Video

-B 课程视频(字典和图片)

--Video

--Video

--Video

--Video

-第5周--小测验A

-第5周--小测验B

-本周项目:“世界杯八强连连看”

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第6周

-A 课程视频(类)

--面向对象编程(类和对象入门)

--面向对象编程(类和对象进阶)

--对象可视化跟踪执行

--华容道中的类

-B 课程视频(平铺图片)

--平铺图片

--理解对象

--编程技巧

--“华容道”游戏

-第6周--小测验A

-第6周--小测验B

-本周项目:“华容道”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第7周

-A 课程视频(类进阶及文件操作)

--集合

--文件操作

--文字块类

--处理停止的文字块

-B 课程视频(游戏状态控制)

--游戏记分规则

--游戏结束的条件及处理

--编程技巧

--“决战三字经”游戏

-第7周--小测验A

-第7周--小测验B

-本周项目:决战三字经

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

第8周

-A、课程视屏(精灵集合)

--Video

--精灵类

--战士类

--编程技巧

-B、课程视屏(动画)

--精灵碰撞

--精灵动画

--编程技巧

--保卫家园游戏

-第8周--小测验

-本周项目:守卫家园

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

SimpleGUITk笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。