当前课程知识点:Python 交互式程序设计导论 >  第5周 >  A 课程视频(鼠标输入、列表进阶) >  鼠标输入

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

鼠标输入在线视频

鼠标输入

下一节:Video

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

鼠标输入课程教案、知识点、字幕

Hi 大家好,欢迎大家回到python课堂

今天,我讲给大家介绍鼠标的使用,首先会给大家讲解, 如何接受鼠标的输入,

再给大家讲解,如何使用鼠标来控制画布上的对象, 好,下面开始我们今天的内容,

我们已经给出了一个程序模板,我们先来运行一下,

那么我们得到了一块儿画布,那么上面什么都没有,

那么我们的要求是,首先在我们的画布正中间画一个小圆,

好,那么,绘制图形,我们要定义绘制函数,所以我们给出一个定义,

定义draw函数,那么它的参数canvas,大家还是记得这个画圆的语法, canvas.draw_circel,

对于圆来说我们有这样几个参数,首先是圆心,我们已经给出了一个 全局变量圆心,我们把它拷贝过来就可以了,

然后是半径,我们这里也给出来了BALL_RADIUS,我们也把它拷贝过来,

那么第三个参数是,边界的宽度,我们给一个2,

然后是边界的颜色,我们给一个白色,

小球内部的填充色,也就是ball_color我们也给出了,

我们粘贴过来就可以了,

好了这是我们的绘制函数,有了绘制函数以后,我们要对它进行一个注册,

frame.set_draw_handle我们的绘制函数的函数名, 应该是没有问题了,我们来运行一下。

画布的正中,得到一个红色小球

下面那,我对这个已有的程序进行第一次修改

我的目的是,当我鼠标在画布上点击的时候

这个小球会随着我的点击,而改变它的位置

我们来想一下,那么当我们的鼠标点击

我们会得到的其实是,鼠标点击下去后的坐标

那么我们希望是把这个坐标呢传递给我们小球的中心坐标

我们定义一个鼠标点击这样一个事件响应函数

我们把它命名为click

我们说是让,ball_center等于我们鼠标点击后得到的这个坐标

那么在这里,我们有两点要强调,第一

那么这个pos呢,是一个元组,也就是圆括号

而我们的ball_center呢,我们在这给的是一个列表

那么在我们的图形绘制当中,不管这个ball_center是以列表的形式给出的

还是以元组的形式给出的,都可以进行绘制

那么元组和列表的区别就是

元组呢是一个,不可变的一种数据类型,而列表呢是可变的数据类型

那么在引用的时候,我们在对元组操作肯能会引起一些不必要的麻烦

所以我们在这对它进行一个强制类型转换,将它转换成列表形式

那么我们在使用的时候,肯能就不会有一些不必要的麻烦

第二,我们的这个ball_center呢是一个全局变量

你要对它进行修改,你就要对它进行声明

鼠标点击函数定义好了以后,就要对它进行一个注册

frame.set_mouseclick鼠标点击handler这样一个, 事件响应函数,处理函数

那么它的函数名的叫click,没有问题,好,我们来运行下

那么可以看到在它的状态栏,会有显示鼠标的点击产生的坐标

那么这是我们第一次对这个版本进行改进

那么第二个改进呢,我是想当我的鼠标

在不同的位置点击的时候,那么小球的位置发生更改

当我的鼠标在小球内部点击的时候,我希望的是, 改变小球内部的显示颜色

而不去更改小球的位置,那么这个时候

我们就要考虑,我们鼠标点击下去后

得到的该点坐标和已经有的这个小球

中心坐标之间的距离,如果它们之间的距离

大于小球半径,那么我们就应该是,更新小球的坐标

如果是小于小球半径,那我就应该是,改变小球的填充色

第一步,我先定义一个辅助函数,来计算两点之间的距离

那么计算两点之间的距离,我们python有一个导入的Math函数

那么它有计算两点之间的距离公式

math.sqrt我直接先给出,(p[0]-q[0])平方加上(p[1]-q[1])平方

两点之间的距离,就是用第一点坐标的水平分量减去第二点坐标的 水平分量括号的平方加上

第一点的竖直分量减去第二点的竖直分量括号的平方,然后开平方

我们将这个值呢返回,我们要对它进行使用

那么我们在哪里进行判断呢?

我们在鼠标点击下以后,进行判断

如果两点坐标呢,两点呢鼠标点击的位置和小球的中心坐标

如果小于小球的半径,那么应该干什么?

我应该改变小球的颜色

假设我把这个颜色改成绿色

否则,也就是,在小球外部怎么办?

如果在小球的外部,那么,我将更新小球的位置

更新小球的位置,那么在这个地方呢ball_color是一个全局变量

所以我们要对它,进行修改,肯定要进行个声明

好了,我们来运行下

产生小球,更新它的位置,没有问题

当我们鼠标点击小球内部,很容易啊,里面的颜色就发生了改变

好,我们再点击别处

有一个小问题,什么问题?

就是,我们的想法是,当我的鼠标在小球外部的时候, 我们只是更新小球的位置

而不改变它的颜色,当我们的鼠标在小球内部的时候, 我们是改变它的颜色

现在我们都是绿色,所以我们在这里呢少写了一句

在哪里呢,就是当我们更新小球位置的时候

同样,我们要把这个ball_color要还原,再来运行

是不是很有意思,那么这就是我们使用鼠标来控制我们画布上的对象

今天的内容就到这里,我们下次课再见

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周--小测验

-本周项目:守卫家园

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

鼠标输入笔记与讨论

也许你还感兴趣的课程:

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