python元组与错误提示演示幻灯片.pyw_python无标题栏窗口_python半透明窗口
用Python制作的幻灯片类型的作品,用来教Python元组启蒙的,还要学习几个常见的错误类型,以下是完整源代码。
本程序需要sprites模块支持,安装方法为在命令提示符下输入以下命令安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sprites --upgrade
1 """ 2 第七课 元组与错误提示 3 """ 4 from sprites import * 5 6 s = '第七课 元组与错误提示' 7 screen = Screen() 8 screen.bgcolor('blue') 9 screen.titlebar(False) 10 root = screen._root # 窗口对象 11 root.wm_attributes('-alpha',0.7) # 设置窗口为全透明(0到1.0) 12 screen.setup(800,700) 13 14 # 下面的代码让窗口可以拖动. 15 oldx = 0 16 oldy = 0 17 def startmove(event): 18 global oldx,oldy 19 oldx = event.x 20 oldy = event.y 21 def stopmove(event): 22 global oldx,oldy 23 oldx = 0 24 oldy = 0 25 def movewindow(event): 26 global oldx,oldy 27 dx = event.x - oldx 28 dy = event.y - oldy 29 root.move(dx,dy) 30 screen.cv.bind("<ButtonPress-2>", startmove) 31 screen.cv.bind("<ButtonRelease-2>", stopmove) 32 screen.cv.bind("<B2-Motion>",movewindow) 33 34 # 下面的代码按方向箭头则窗口能上下左右移动 35 screen.onkeypress(lambda:root.move(10),'Right') 36 screen.onkeypress(lambda:root.move(-10),'Left') 37 screen.onkeypress(lambda:root.move(0,-10),'Up') 38 screen.onkeypress(lambda:root.move(0,10),'Down') 39 screen.listen() 40 41 ft = ('楷体',38,'bold') 42 t = Sprite(visible=False,pos=(-500,0)) 43 t.color('magenta') 44 clock = Clock() 45 for x in range(110): 46 t.clear() 47 t.write(s,align='center',font=ft) 48 t.wait() 49 t.fd(5) 50 clock.tick(60) 51 52 m1 = Mouse() # 鼠标左键 53 while not m1.down():screen.update() 54 55 for x in range(50): 56 t.clear() 57 t.write(s,align='center',font=ft) 58 t.wait() 59 t.fd(10) 60 clock.tick(60) 61 62 #以下是显示学习的内容段 63 studycontent = """ 64 主要学习内容 65 66 1、元组的概念 67 68 2、元组的索引 69 70 3、语法错误 71 72 4、名字错误 73 74 5、类型错误 75 76 6、索引错误 77 78 7、练习与作业 79 """ 80 t.color('white') 81 t.clear() 82 t.sety(-260) # 这里修改菜单的显示y坐标 83 ft = ('楷体',24,'bold') 84 s = studycontent 85 while not m1.down():screen.update() 86 # 下面的代码显示主菜单 87 for x in range(110): 88 t.clear() 89 t.write(s,align='center',font=ft) 90 t.wait() 91 t.bk(5) 92 clock.tick(60) 93 94 def slow_write(t,string): 95 """ 96 t:角色,string:要显示的字 97 本函数慢慢的显示字。 98 """ 99 string = string.split('\n') # 换成列表 100 oldxy = t.position() # 记录老的坐标 101 t.goto(-340,310) # 到新的坐标 102 for line in string: # 每一行字 103 for char in line: # 每一个字符 104 t.write(char,align='center',font=ft) 105 t.wait(0.2) 106 cd = len(bytes(char,'gb2312')) 107 if cd == 1: 108 t.addx(20) 109 else: 110 t.addx(30) 111 t.setx(-336) 112 t.addy(-50) 113 t.goto(oldxy) 114 115 s1 = """ 116 1、元组的概念 117 118 元组是以小括号封闭的,以逗号隔开的,有顺序的, 119 不可变的数据集合。英文名为tuple。 120 它是一种固定的组合,一旦元组中的数据确定了, 121 那么我们就不能往里面添加,删除与修改数据。 122 定义一个空元组可以直接输入(),也可以用tuple命令, 123 如xy=tuple()会返回一个名为xy的空元组。 124 新建一个只有一个数据的元组,要在这个数据后面加逗号。 125 如,(3,)是一个只有一个数据的元组。 126 type查看元组的结果为<class 'tuple'> 127 """ 128 def press1(): 129 t.clear() 130 slow_write(t,s1) 131 while not m1.down():screen.update() 132 t.clear() 133 t.write(s,align='center',font=ft) 134 screen.onkeypress(press1,'1') 135 136 137 s2 = """ 138 2、元组的索引 139 140 元组和列表一样,要访问元组中的每个数据 141 也是通过索引号进行的。 142 假设有一个元组叫cors=(32,76),那么我们可 143 以通过cors[0]访问它的第一个数据, 144 通过cors[-1]访问它的最后一个数据, 145 但是不能给它们赋值。 146 如果试图修改cors[0]的值,那么就会显示类型错误。 147 即cors[0]=77这样的式子是会出错的。 148 """ 149 def press2(): 150 t.clear() 151 slow_write(t,s2) 152 while not m1.down():screen.update() 153 t.clear() 154 t.write(s,align='center',font=ft) 155 screen.onkeypress(press2,'2') 156 157 158 s3 = """ 159 3、语法错误 160 161 当我们输入代码的时候,不小心可能会出现了语法方面 162 的错误。Python就会显示语法错误。 163 如输入print(32),那么就会出错语法错误。它的英文 164 提示字符串为: 165 SyntaxError: invalid character in identifier 166 这个错误是由于前半部分小括号输入错误,应该输入 167 半角小括号。 168 """ 169 def press3(): 170 t.clear() 171 slow_write(t,s3) 172 while not m1.down():screen.update() 173 t.clear() 174 t.write(s,align='center',font=ft) 175 screen.onkeypress(press3,'3') 176 177 178 s4 = """ 179 4、名字错误 180 181 当我们使用了一个没有定义的‘变量’时,就会出现 182 这个错误。假设并没有叫x的变量,当用print打印它 183 时就会显示以下的字符。 184 NameError: name 'x' is not defined 185 意思是名字错误:名字'x'没有被定义。 186 """ 187 def press4(): 188 t.clear() 189 slow_write(t,s4) 190 while not m1.down():screen.update() 191 t.clear() 192 t.write(s,align='center',font=ft) 193 screen.onkeypress(press4,'4') 194 195 196 s5 = """ 197 5、类型错误 198 199 当某种数据不支持某种操作时,就会出现类型错误。 200 典型的如,元组不支持修改数据。 201 那么试图修改它里面的数据的时候就会现出类型错误。 202 假设有一个元组叫colors,它的值如下所示: 203 ('red','bule','cyan'), 204 那么输入colors[1]='black'就会显示类型错误。 205 英文为: 206 TypeError: 'tuple' object does not 207 support item assignment 208 上面的意思是类型错误:‘元组’对象不支持项目赋值。 209 """ 210 def press5(): 211 t.clear() 212 slow_write(t,s5) 213 while not m1.down():screen.update() 214 t.clear() 215 t.write(s,align='center',font=ft) 216 screen.onkeypress(press5,'5') 217 218 s6 = """ 219 6、索引错误 220 221 当使用超出范围的索引号时,就会出现这个错误。 222 假设有颜色表为: 223 colors=['red','bule','cyan'],由于colors列表 224 最大的索引号为2,那么打印colors[5]的时候就会 225 出现索引错误。它的英文提示为: 226 IndexError: list index out of range 227 意思就是索引错误:列表索引超出范围。 228 """ 229 def press6(): 230 t.clear() 231 slow_write(t,s6) 232 while not m1.down():screen.update() 233 t.clear() 234 t.write(s,align='center',font=ft) 235 screen.onkeypress(press6,'6') 236 237 s7 = """ 238 7、练习与作业 239 240 ① 说出列表和元组的区别。 241 ② ('abcd')这个数据是什么类型? 242 ③ 把总结的四种类型提示里的英文单词放在一个元组中。 243 ④ tuple命令不仅能新建空元组,也能在它的小括号里 244 加上字符串或列表。尝试下面的用法: 245 tuple('风火轮编程')和 246 tuple([32,76,8])。 247 说说tuple这个时候起了什么作用? 248 """ 249 def press7(): 250 t.clear() 251 slow_write(t,s7) 252 while not m1.down():screen.update() 253 t.clear() 254 t.write(s,align='center',font=ft) 255 screen.onkeypress(press7,'7') 256 257 258 259 byebye = """ 260 下次再见! 261 """ 262 def pressq(): 263 t.clear() 264 t.color('cyan') 265 t.home() 266 t.write(byebye,align='center',font=('宋体',38,'bold')) 267 while not m1.down():screen.update() 268 screen.bye() 269 screen.onkeypress(pressq,'q') 270 271 272 screen.mainloop()