python元组启蒙半透明窗口无标题窗口tkinter

25 篇文章 6 订阅
7 篇文章 0 订阅

李兴球python元组启蒙

用Python制作的幻灯片类型的作品,用来教Python元组启蒙的,还要学习几个常见的错误类型,以下是完整源代码。
本程序需要sprites模块支持,安装方法为在命令提示符下输入以下命令安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sprites    --upgrade

"""
   第七课 元组与错误提示
"""
from sprites import *

s = '第七课 元组与错误提示'
screen = Screen()
screen.bgcolor('blue')
screen.titlebar(False)
root = screen._root              # 窗口对象
root.wm_attributes('-alpha',0.7) # 设置窗口为全透明(0到1.0)
screen.setup(800,700)

# 下面的代码让窗口可以拖动.
oldx = 0
oldy = 0
def startmove(event):
    global oldx,oldy
    oldx = event.x
    oldy = event.y
def stopmove(event):
    global oldx,oldy
    oldx = 0
    oldy = 0        
def movewindow(event):
    global oldx,oldy     
    dx = event.x - oldx
    dy = event.y - oldy
    root.move(dx,dy)
screen.cv.bind("<ButtonPress-2>", startmove)
screen.cv.bind("<ButtonRelease-2>", stopmove)
screen.cv.bind("<B2-Motion>",movewindow)

# 下面的代码按方向箭头则窗口能上下左右移动
screen.onkeypress(lambda:root.move(10),'Right')
screen.onkeypress(lambda:root.move(-10),'Left')
screen.onkeypress(lambda:root.move(0,-10),'Up')
screen.onkeypress(lambda:root.move(0,10),'Down')
screen.listen()

ft = ('楷体',38,'bold')
t = Sprite(visible=False,pos=(-500,0))
t.color('magenta')
clock = Clock()
for x in range(110):
    t.clear()
    t.write(s,align='center',font=ft)
    t.wait()
    t.fd(5)
    clock.tick(60)

m1 = Mouse()          # 鼠标左键
while not m1.down():screen.update()

for x in range(50):
    t.clear()
    t.write(s,align='center',font=ft)
    t.wait()
    t.fd(10)
    clock.tick(60)
    
#以下是显示学习的内容段
studycontent = """
主要学习内容

1、元组的概念

2、元组的索引

3、语法错误

4、名字错误

5、类型错误

6、索引错误

7、练习与作业
"""
t.color('white')
t.clear()
t.sety(-260)              # 这里修改菜单的显示y坐标
ft = ('楷体',24,'bold')
s = studycontent
while not m1.down():screen.update()
#  下面的代码显示主菜单
for x in range(110):
    t.clear()
    t.write(s,align='center',font=ft)
    t.wait()
    t.bk(5)
    clock.tick(60)

def slow_write(t,string):
    """
       t:角色,string:要显示的字
       本函数慢慢的显示字。
    """
    string = string.split('\n') # 换成列表     
    oldxy = t.position()   # 记录老的坐标
    t.goto(-340,310)       # 到新的坐标
    for line in string:    # 每一行字
        for char in line:     # 每一个字符
            t.write(char,align='center',font=ft)
            t.wait(0.2)
            cd = len(bytes(char,'gb2312'))
            if cd == 1:
                t.addx(20)
            else:
                t.addx(30)
        t.setx(-336)
        t.addy(-50)
    t.goto(oldxy)
     
s1 = """
1、元组的概念

元组是以小括号封闭的,以逗号隔开的,有顺序的,
不可变的数据集合。英文名为tuple。
它是一种固定的组合,一旦元组中的数据确定了,
那么我们就不能往里面添加,删除与修改数据。
定义一个空元组可以直接输入(),也可以用tuple命令,
如xy=tuple()会返回一个名为xy的空元组。
新建一个只有一个数据的元组,要在这个数据后面加逗号。
如,(3,)是一个只有一个数据的元组。
type查看元组的结果为<class 'tuple'>
"""
def press1():
    t.clear()
    slow_write(t,s1)
    while not m1.down():screen.update()
    t.clear()
    t.write(s,align='center',font=ft)    
screen.onkeypress(press1,'1')


s2 = """
2、元组的索引

元组和列表一样,要访问元组中的每个数据
也是通过索引号进行的。
假设有一个元组叫cors=(32,76),那么我们可
以通过cors[0]访问它的第一个数据,
通过cors[-1]访问它的最后一个数据,
但是不能给它们赋值。
如果试图修改cors[0]的值,那么就会显示类型错误。
即cors[0]=77这样的式子是会出错的。
"""
def press2():
    t.clear()
    slow_write(t,s2)
    while not m1.down():screen.update()
    t.clear()
    t.write(s,align='center',font=ft)    
screen.onkeypress(press2,'2')


s3 = """
3、语法错误

当我们输入代码的时候,不小心可能会出现了语法方面
的错误。Python就会显示语法错误。
如输入print(32),那么就会出错语法错误。它的英文
提示字符串为:
SyntaxError: invalid character in identifier
这个错误是由于前半部分小括号输入错误,应该输入
半角小括号。
"""
def press3():
    t.clear()
    slow_write(t,s3)
    while not m1.down():screen.update()
    t.clear()
    t.write(s,align='center',font=ft)    
screen.onkeypress(press3,'3')


s4 = """
4、名字错误

当我们使用了一个没有定义的‘变量’时,就会出现
这个错误。假设并没有叫x的变量,当用print打印它
时就会显示以下的字符。
NameError: name 'x' is not defined
意思是名字错误:名字'x'没有被定义。
"""
def press4():
    t.clear()
    slow_write(t,s4)
    while not m1.down():screen.update()
    t.clear()
    t.write(s,align='center',font=ft)    
screen.onkeypress(press4,'4')


s5 = """
5、类型错误

当某种数据不支持某种操作时,就会出现类型错误。
典型的如,元组不支持修改数据。
那么试图修改它里面的数据的时候就会现出类型错误。
假设有一个元组叫colors,它的值如下所示:
('red','bule','cyan'),
那么输入colors[1]='black'就会显示类型错误。
英文为:
TypeError: 'tuple' object does not
support item assignment
上面的意思是类型错误:‘元组’对象不支持项目赋值。   
"""
def press5():
    t.clear()
    slow_write(t,s5)
    while not m1.down():screen.update()
    t.clear()
    t.write(s,align='center',font=ft)    
screen.onkeypress(press5,'5')

s6 = """
6、索引错误

当使用超出范围的索引号时,就会出现这个错误。
假设有颜色表为:
colors=['red','bule','cyan'],由于colors列表
最大的索引号为2,那么打印colors[5]的时候就会
出现索引错误。它的英文提示为:
IndexError: list index out of range
意思就是索引错误:列表索引超出范围。
"""
def press6():
    t.clear()
    slow_write(t,s6)
    while not m1.down():screen.update()
    t.clear()
    t.write(s,align='center',font=ft)    
screen.onkeypress(press6,'6')

s7 = """
7、练习与作业

① 说出列表和元组的区别。
② ('abcd')这个数据是什么类型?
③ 把总结的四种类型提示里的英文单词放在一个元组中。
④ tuple命令不仅能新建空元组,也能在它的小括号里
加上字符串或列表。尝试下面的用法:
tuple('风火轮编程')和
tuple([32,76,8])。
说说tuple这个时候起了什么作用?
"""
def press7():
    t.clear()
    slow_write(t,s7)
    while not m1.down():screen.update()
    t.clear()
    t.write(s,align='center',font=ft)    
screen.onkeypress(press7,'7')

 

byebye = """
下次再见!
"""
def pressq():
    t.clear()
    t.color('cyan')
    t.home()
    t.write(byebye,align='center',font=('宋体',38,'bold'))
    while not m1.down():screen.update()
    screen.bye()    
screen.onkeypress(pressq,'q')


screen.mainloop()

 

更多python源代码,请打开李兴球博客www.lixingqiu.com

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李兴球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值