用Python制作的幻灯片类型的作品,用来教Python字符串启蒙的教程,这个作品启动的时候会有无标题栏的半透明的窗品。
本程序需要sprites模块支持,安装方法为在命令提示符下输入以下命令安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sprites --upgrade

python subplots 加副标题中文乱码 python标题栏_字符串

以下是完整的源代码:

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 ft = ('楷体',38,'bold')
 15 t = Sprite(visible=False,pos=(-500,0))
 16 t.color('magenta')
 17 clock = Clock()
 18 for x in range(110):
 19     t.clear()
 20     t.write(s,align='center',font=ft)
 21     t.wait()
 22     t.fd(5)
 23     clock.tick(60)
 24 
 25 m1 = Mouse()          # 鼠标左键
 26 while not m1.down():screen.update()
 27 
 28 for x in range(50):
 29     t.clear()
 30     t.write(s,align='center',font=ft)
 31     t.wait()
 32     t.fd(10)
 33     clock.tick(60)
 34     
 35 #以下是显示学习的内容段
 36 studycontent = """
 37 主要学习内容
 38 
 39 1、字符串的概念
 40 
 41 2、转义字符
 42 
 43 3、len命令
 44 
 45 4、str的加法和乘法
 46 
 47 5、字符串的索引
 48 
 49 6、索引错误
 50 
 51 7、字符串的不可变性
 52 """
 53 t.color('white')
 54 t.clear()
 55 t.sety(-300)              # 这里修改菜单的显示y坐标
 56 ft = ('楷体',24,'bold')
 57 s = studycontent
 58 while not m1.down():screen.update()
 59 #  下面的代码显示主菜单
 60 for x in range(110):
 61     t.clear()
 62     t.write(s,align='center',font=ft)
 63     t.wait()
 64     t.bk(5)
 65     clock.tick(60)
 66 
 67 screen.listen()
 68 
 69 def slow_write(t,string):
 70     """
 71        t:角色,string:要显示的字
 72        本函数慢慢的显示字。
 73     """
 74     string = string.split('\n') # 换成列表     
 75     oldxy = t.position()   # 记录老的坐标
 76     t.goto(-340,310)       # 到新的坐标
 77     for line in string:    # 每一行字
 78         for char in line:     # 每一个字符
 79             t.write(char,align='center',font=ft)
 80             t.wait(0.2)
 81             cd = len(bytes(char,'gb2312'))
 82             if cd == 1:
 83                 t.addx(20)
 84             else:
 85                 t.addx(30)
 86         t.setx(-336)
 87         t.addy(-50)
 88     t.goto(oldxy)
 89      
 90 s1 = """
 91 1、字符串的概念
 92 在Python中,字符串是用引号封闭的一些字符。
 93 用成对的双引号,单引号,或三引号封闭一些字
 94 符时都可以定义字符串。当然,我们可以把它
 95 赋值给一个变量。
 96 如 s='red',或者 c="yellow"都是定义字符串。
 97 用三引号封闭的话,在定义时可以直接敲回车。
 98 当输入type('a')时,会显示<class 'str'>。
 99 str是英文string的前三个字母,它就是字符串的意思
100 (单击返回主菜单)
101 """
102 def press1():
103     t.clear()
104     slow_write(t,s1)
105     while not m1.down():screen.update()
106     t.clear()
107     t.write(s,align='center',font=ft)    
108 screen.onkeypress(press1,'1')
109 
110 
111 s2 = """
112 2、转义字符
113 在计算机里,有些字符是看不见的,
114 如换行符写做\'\\n\'。
115 当我们按键盘上的Tab键的时候,
116 在文本框里会表现为跳一格。
117 这就是在输入制表符,它写做\'\\t\'。
118 当我们敲回车键时,就是输入回车符号,它写做\'\\r\'。
119 那么,当我们要输入反斜杠本身时,要怎么输入呢?
120 我们可以输入\'\\\\\'。来表示一个反斜杠。
121 当我们用三引号定义字符串,并且在输入字符的时候
122 敲了回车时,Python会自动帮我们加上换行符
123 而不是回车符。(单击返回主菜单)
124 """
125 def press2():
126     t.clear()
127     slow_write(t,s2)
128     while not m1.down():screen.update()
129     t.clear()
130     t.write(s,align='center',font=ft)    
131 screen.onkeypress(press2,'2')
132 
133 
134 s3 = """
135 3、len命令
136 len是求字符串中字符个数的命令。
137 语法:len(字符串)。
138 如len('风火轮编程')的结果是5。
139 len(\'\\n\')的结果是1,这是由于\'\\n\'表示是一个换行符。
140 len('')  的结果是0,这是由于''是空字符串。
141 (单击返回主菜单)
142 """
143 def press3():
144     t.clear()
145     slow_write(t,s3)
146     while not m1.down():screen.update()
147     t.clear()
148     t.write(s,align='center',font=ft)    
149 screen.onkeypress(press3,'3')
150 
151 
152 s4 = """
153 4、str的加法和乘法
154 连接字符串用加号即可。如'ab' + 'cd'
155 字符串可以乘以一个整数,它会把字符串
156 重复一定的次数。如len('风火轮编程'*3)
157 的结果是15。(单击返回主菜单)
158 """
159 def press4():
160     t.clear()
161     slow_write(t,s4)
162     while not m1.down():screen.update()
163     t.clear()
164     t.write(s,align='center',font=ft)    
165 screen.onkeypress(press4,'4')
166 
167 
168 s5 = """
169 5、字符串的索引
170 字符串中的每个字符有编号,从左到右数,
171 编号从0开始的,这个编号叫做索引号。
172 我们可以通过索引号访问字符串中的字符。
173 方法:字符串名称[index],其中index表示索引号。
174 假设有字符串s='abcdefg',那么s[0]就是'a',
175 s[3]就是'd'。
176 在字符串中,索引号也可以从右到左数。
177 这个时候索引号是从-1开始。也就是说s[-1]
178 表示倒数第一个字符,s[-2]表示倒数第二个字符,
179 依此类推。(单击返回主菜单)
180 """
181 def press5():
182     t.clear()
183     slow_write(t,s5)
184     while not m1.down():screen.update()
185     t.clear()
186     t.write(s,align='center',font=ft)    
187 screen.onkeypress(press5,'5')
188 
189 s6 = """
190 6、索引错误
191 字符串中的字符是有一定数量的,也就是说
192 索引号肯定有一定范围。假设有 s='abcdefg',
193 那么它的索引号是从0到6。
194 如果输入s[7]会怎么样呢,这个时候就会提示错误。
195 这个错误叫indexError,即索引错误。
196 我们实践一下索引错误。(单击返回主菜单)
197 """
198 def press6():
199     t.clear()
200     slow_write(t,s6)
201     while not m1.down():screen.update()
202     t.clear()
203     t.write(s,align='center',font=ft)    
204 screen.onkeypress(press6,'6')
205 
206 s7 = """
207 7、字符串的不可变性
208 字符串有一个特性就是它是不可变的。
209 主要表现为,我们可以通过索引号访问它的某个
210 字符,但不能修改它。假设有s='abcdefg',
211 那么让s[0]='风'是不可以的,这是会出错的。
212 (单击返回主菜单)
213 """
214 def press7():
215     t.clear()
216     slow_write(t,s7)
217     while not m1.down():screen.update()
218     t.clear()
219     t.write(s,align='center',font=ft)    
220 screen.onkeypress(press7,'7')
221 
222  
223 
224 byebye = """
225 下次再见!
226 """
227 def pressq():
228     t.clear()
229     t.color('cyan')
230     t.home()
231     t.write(byebye,align='center',font=('宋体',38,'bold'))
232     while not m1.down():screen.update()
233     screen.bye()    
234 screen.onkeypress(pressq,'q')
235 
236 # 下面的代码让窗口可以拖动.
237 oldx = 0
238 oldy = 0
239 def startmove(event):
240     global oldx,oldy
241     oldx = event.x
242     oldy = event.y
243 def stopmove(event):
244     global oldx,oldy
245     oldx = 0
246     oldy = 0        
247 def movewindow(event):
248     global oldx,oldy     
249     dx = event.x - oldx
250     dy = event.y - oldy
251     root.move(dx,dy)
252 screen.cv.bind("<ButtonPress-2>", startmove)
253 screen.cv.bind("<ButtonRelease-2>", stopmove)
254 screen.cv.bind("<B2-Motion>",movewindow)
255 screen.mainloop()