小学课后服务 Python少儿编程 提高篇:8-初识图形化 课件 (34张PPT)

资源下载
  1. 二一教育资源

小学课后服务 Python少儿编程 提高篇:8-初识图形化 课件 (34张PPT)

资源简介

(共34张PPT)
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
少儿编程课
初识图形化
应用程序
我们平时接触的应用程序大致分三类:
(电脑)桌面应用程序
我们平时接触的应用程序大致分三类:
WEB应用程序
我们平时接触的应用程序大致分三类:
(手机)桌面应用程序
这也对应着计算机技术的发展和变迁
今天我们来学习制作一个桌面应用
开发这个小的桌面应用是基于以下目的
掌握Python开发桌面应用程序的技术,可以开发日常学习、生活的小工具

复习并巩固Python的基础语法知识

学习一些其他的Python的知识,如第三方模块的下载和安装、列表生成式等

先来看以下Python中GUI相关的库
wxPython
PyQt
tkinter
Python常用GUI图形用户界面(Graphical User Interface)库
单色板
下面我们就是用tkinter制作单色板
1
想使用tkinter,需要先将它导入进来:
4
此时运行,就能看到我们的第一个小窗口了
2
然后创建一个窗口:
from tkinter import *
3
想看到窗口的效果,还需要加上这句:
root.mainloop()
root = Tk()
下面我们设置窗口的标题和大小
1
使用root的title方法,可以设置窗口标题
3
运行效果如下:
2
想设置窗口的大小,需要使用
root的geometry方法:
root.title('我的小窗口')
root.geometry('600x400')
这个方法的参数600x400就表示创建的
窗口宽度是600,高度是400,单位是像素。
除了标题和大小,我们还可以指定它出现在桌面上的位置
1
使用geometry时传入600x400+300+200做参数
root.geometry('600x400+300+200')
300和200指的是窗口最左上角的点在屏幕上的坐标,也即窗口在屏幕上的位置。其中300指x轴坐标的大小,200指y轴坐标的大小。对于tkinter来说,屏幕左上角是原点,从原点出发,横向向右是x轴,纵向向下是y轴。
2
接着我们给小窗口上色,想要给窗口上色,就需要先了解做桌面应用的思路
1
2
一般来说,做GUI程序就像画画
这里的root窗口就像画板
3
画板上铺上一张画纸,然后在画纸上画
在tkinter中,画纸的角色由Frame担当
1
2
定义画纸
这里的root窗口就是画板,frame_basic定义好之后还需要将画纸贴上去,如何来贴呢?
对于画板来说,画纸贴在哪是有讲究的,不能乱贴。这种如何贴画纸的规矩,称为布局。
frame_basic = Frame(width=600, height=400, bg='red')
比如tkinter中有个grid布局,它会将画板分成几行几列的网格状,你可以选择将画纸贴住第几行第几列的格子里。
在tkinter中,画纸的角色由Frame担当
1
2
指定布局,就相当于将画纸贴到了画板上
完整代码如下
frame_basic.grid(row=0, column=0)
from tkinter import *
root = Tk()
root.title('我的小窗口')
root.geometry('600x400+300+200')
# 定义画纸,背景颜色为orange橘黄色
frame_basic = Frame(width=600, height=400, bg='orange')
# 将frame_basic放在画板的第一行第一列,也即第一个单元格
frame_basic.grid(row=0, column=0)
root.mainloop()
3
运行效果如下
四色板
练习
Exercises


线





基于单色板开发四色板,要求屏幕分成四等份,
每份一种颜色。
这个练习需要注意的就是每块色块的大小和布局,也即放到第几行第几列去
1
2
代码如下:
from tkinter import *
root = Tk()
root.title('我的小窗口')
root.geometry('600x400+300+200')
# 定义4个Frame,指定4种不同的背景颜色
# 600 / 2 表示600除以2,作为定义的Frame的宽度
frame1 = Frame(width=600 / 2, height=400 / 2, bg='orange')
frame2 = Frame(width=600 / 2, height=400 / 2, bg='green')
frame3 = Frame(width=600 / 2, height=400 / 2, bg='pink')
frame4 = Frame(width=600 / 2, height=400 / 2, bg='white')
# 将4个Frame依次放入指定位置
frame1.grid(row=0, column=0)
frame2.grid(row=0, column=1)
frame3.grid(row=1, column=0)
frame4.grid(row=1, column=1)
root.mainloop()
实现效果如下
随机颜色的四色板
下面我们让每次运行时的色板颜色随机出现
1
先来了解一种颜色表示的形式
frame1 = Frame(width=600 / 2, height=400 / 2, bg='#F08080')
2
RGB色彩模式
RGB色彩模式是一种颜色标准,目前的显示器大都采用了这种颜色标准。这里的RGB是红色Red,绿色Green和蓝色Blue的首字母组合。电脑屏幕上的所有颜色,都由这三种色光按照不同的比例混合而成的。
在电脑中,RGB的所谓“多少”是指亮度,并使用整数来表示。通常情况下,RGB各有256级亮度,用数字表示为从0、1、2...直到255。注意虽然数字最高是255,但0也是数值之一,因此共256级。
使用红绿蓝的这256个数值,我们就能“调制”颜色了。比如黑色可以表示为“000”,第一个0表示Red的亮度值,第2个表示绿色的亮度值,第3个表示蓝色的亮度值。
思考一下,如果是白色,用什么来表示?
白色就是255255255,但是这样不方便阅读,比如2552550就不知道那几位表示什么颜色了
1
我们需要了解进制的概念
二进制 十进制 十六进制 二进制 十进制 十六进制
0000 0 0 1000 8 8
0001 1 1 1001 9 9
0010 2 2 1010 10 A
0011 3 3 1011 11 B
0100 4 4 1100 12 C
0101 5 5 1101 13 D
0110 6 6 1110 14 E
0111 7 7 1111 15 F
二进制、十进制、十六进制对照表
接下来我们简单来说说进制之间的转换
1
十进制转二进制
除二取余,得到的商再除以二,依次类推直到
商为零或一时为止,然后将每次的余数倒序排列
2
十进制转十六进制和这类似
15 15对应的十六进制,就是FF,
也就是说,255对应的十六进制是FF
也就是说,使用十六进制我们就可以让RGB这三个数值的格式标准起来
0-255
0-255
0-255
00-FF
00-FF
00-FF
0000FF
颜色:
十进制:
十六进制:
六位十六进制:
了解了屏幕颜色的组成原理之后,我们就可以产生随机颜色了。
1
定义方法,用于产生随机颜色,也即产生六位十六进制字符串
2
然后把Frame的bg参数指定为bg=get_color()就能取得一个随机颜色
def get_color():
color = ''
colors = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
for i in range(6):
# 随机0-15内的数,作为下标去取colors中的字符
index = random.randint(0, 15)
# 拼接成6位的字符串
color += colors[index]
return '#' + color
练习
Exercises


线





根据四色板程序编写九色板程序,也即窗口平分
为3行3列共9块,每块颜色随机。
多色板
在4色板的基础上,只要稍加改造这段代码,就可以做出任意多行任意多列的多色板来。
1
比如想开发个九色板,那定义的Frame的宽和高要除以3
2
当然,这些参数可以配套使用
frame1 = Frame(width=600 / 3, height=400 / 3, bg=get_color())
…… # 定义其他Frame,此处省略
frame1.grid(row=0, column=0)
frame2.grid(row=0, column=1)
frame3.grid(row=0, column=2)
frame4.grid(row=1, column=0)
frame5.grid(row=1, column=1)
frame6.grid(row=1, column=2)
frame7.grid(row=2, column=0)
frame8.grid(row=2, column=1)
frame9.grid(row=2, column=2)
思考一下:这个过程能不能优化呢?
下面我们就优化下重复的过程,并作出通用性的多色板来
1
首先将9色板的开发过程使用循环替代
2
如果是4行4列、4行3列、n行n列,我们只需要把上面的3给换成变量就行了
for i in range(3):
for j in range(3):
frame = Frame(width=600 / 3, height=400 / 3, bg=get_color())
frame.grid(row=i, column=j)
# 定义行数
row_num = 4
# 定义列数
column_num = 3
# 循环创建Frame,并指定其位置
for i in range(row_num):
for j in range(column_num):
frame = Frame(width=600 / column_num, height=400 / row_num, bg=get_color())
frame.grid(row=i, column=j)
注意程序中Frame的宽度是600除以列数,高度是400除以行数
最后,我们再做一点美化和限制
1
首先是给色块间添加分割线
2
可以设置窗口不可改变大小,这样就防止了窗口因拖动而变形
frame.grid(row=i, column=j, padx=1, pady=1)
padx用于设置x轴方向色块间的间隔,pady用于设置y轴方向上色块间的间隔,单位都是像素。
# 此时因为添加了分割线,就加大了宽度和高度,当然这个要根据实际情况调整
root.maxsize(width=620, height=420)
root.minsize(width=620, height=420)
这样,我们不可改变大小的任意行列的多色板就做好了
总结
Summary
tkinter的基本思路,以及Tk、Frame的使用

GridLayout布局的使用

RGB三原色原理及颜色的十六进制表示形式

Thanks!

展开更多......

收起↑

资源预览