资源简介 (共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相关的库wxPythonPyQttkinterPython常用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接着我们给小窗口上色,想要给窗口上色,就需要先了解做桌面应用的思路12一般来说,做GUI程序就像画画这里的root窗口就像画板3画板上铺上一张画纸,然后在画纸上画在tkinter中,画纸的角色由Frame担当12定义画纸这里的root窗口就是画板,frame_basic定义好之后还需要将画纸贴上去,如何来贴呢?对于画板来说,画纸贴在哪是有讲究的,不能乱贴。这种如何贴画纸的规矩,称为布局。frame_basic = Frame(width=600, height=400, bg='red')比如tkinter中有个grid布局,它会将画板分成几行几列的网格状,你可以选择将画纸贴住第几行第几列的格子里。在tkinter中,画纸的角色由Frame担当12指定布局,就相当于将画纸贴到了画板上完整代码如下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密封线内不准答题基于单色板开发四色板,要求屏幕分成四等份,每份一种颜色。这个练习需要注意的就是每块色块的大小和布局,也即放到第几行第几列去12代码如下: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')2RGB色彩模式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 80001 1 1 1001 9 90010 2 2 1010 10 A0011 3 3 1011 11 B0100 4 4 1100 12 C0101 5 5 1101 13 D0110 6 6 1110 14 E0111 7 7 1111 15 F二进制、十进制、十六进制对照表接下来我们简单来说说进制之间的转换1十进制转二进制除二取余,得到的商再除以二,依次类推直到商为零或一时为止,然后将每次的余数倒序排列2十进制转十六进制和这类似15 15对应的十六进制,就是FF,也就是说,255对应的十六进制是FF也就是说,使用十六进制我们就可以让RGB这三个数值的格式标准起来0-2550-2550-25500-FF00-FF00-FF0000FF颜色:十进制:十六进制:六位十六进制:了解了屏幕颜色的组成原理之后,我们就可以产生随机颜色了。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的宽和高要除以32当然,这些参数可以配套使用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)这样,我们不可改变大小的任意行列的多色板就做好了总结Summarytkinter的基本思路,以及Tk、Frame的使用√GridLayout布局的使用√RGB三原色原理及颜色的十六进制表示形式√Thanks! 展开更多...... 收起↑ 资源预览