python使用canvas怎么实现移动并绑定键盘
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,python使用canvas怎么实现移动并绑定键盘,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、任务用多个按钮或者按
千家信息网最后更新 2025年11月07日python使用canvas怎么实现移动并绑定键盘
python使用canvas怎么实现移动并绑定键盘,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
一、任务
用多个按钮或者按钮+文本框实现不同物体(椭圆,长方形,扇形)的各个方向的运动(上下左右)
效果图:

二、实现
(1)导库并创建画布
import tkinter as tkwindow = tk.Tk()window.title('my window')##窗口尺寸window.geometry('300x350')#新建画布canvas=tk.Canvas(window,bg='blue',height=150,width=300)(2)画图形
#画线x0,y0,x1,y1=50,50,80,80line=canvas.create_line(x0,y0,x1,y1)#画⚪oval=canvas.create_oval(x0,y0,x1,y1,fill='red')#画一个扇形arc = canvas.create_arc(x0+30, y0+30, x1+30, y1+30, start=0, extent=90)#画一个矩形rect = canvas.create_rectangle(100, 30, 100+20, 30+20) canvas.pack()
(3)创建按钮和文本框
#创建文本框entry = tk.Entry(window, show=None)entry.pack()#创建文本label = tk.Label(window , text='圆:oval;线:line;扇形:arc;矩形 :rect')label.pack() #打包#创建一个Buttonb=tk.Button(window,text='下',command=moveit)b.place(x=120,y=280)up=tk.Button(window,text='上',command=moveup)up.place(x=120,y=220)left=tk.Button(window,text='左',command=moveleft)left.place(x=80,y=250)right=tk.Button(window,text='右',command=moveright)right.place(x=160,y=250)
(4)功能实现
#向下移动def moveit(): obj = entry.get() #获取输入框的参数,移动那个图形 if obj =='rect': canvas.move(rect,0,2) #第一个参数是图形 elif obj == 'arc': canvas.move(arc, 0, 2) # 第一个参数是图形 elif obj =='oval': canvas.move(oval, 0, 2) # 第一个参数是图形 elif obj == 'line': canvas.move(line, 0, 2)#向上移动def moveup(): obj = entry.get() # 获取输入框的参数,移动那个图形 if obj =='rect': canvas.move(rect,0,-2) #第一个参数是图形 elif obj == 'arc': canvas.move(arc,0,-2) # 第一个参数是图形 elif obj =='oval': canvas.move(oval,0,-2) # 第一个参数是图形 elif obj == 'line': canvas.move(line,0,-2)#向左移动def moveleft(): obj = entry.get() # 获取输入框的参数,移动那个图形 if obj =='rect': canvas.move(rect, -2 ,0) #第一个参数是图形 elif obj == 'arc': canvas.move(arc, -2 ,0) # 第一个参数是图形 elif obj =='oval': canvas.move(oval, -2 ,0) # 第一个参数是图形 elif obj == 'line': canvas.move(line, -2, 0)#向右移动def moveright(): obj = entry.get() # 获取输入框的参数,移动那个图形 if obj =='rect': canvas.move(rect,2,0) #第一个参数是图形 elif obj == 'arc': canvas.move(arc, 2,0) # 第一个参数是图形 elif obj =='oval': canvas.move(oval, 2,0) # 第一个参数是图形 elif obj == 'line': canvas.move(line , 2, 0)
三、完整代码
import tkinter as tkwindow = tk.Tk()window.title('my window')##窗口尺寸window.geometry('300x350')#新建画布canvas=tk.Canvas(window,bg='blue',height=150,width=300)#画线x0,y0,x1,y1=50,50,80,80line=canvas.create_line(x0,y0,x1,y1)#画⚪oval=canvas.create_oval(x0,y0,x1,y1,fill='red')#画一个扇形arc = canvas.create_arc(x0+30, y0+30, x1+30, y1+30, start=0, extent=90)#画一个矩形rect = canvas.create_rectangle(100, 30, 100+20, 30+20) canvas.pack()#创建文本框entry = tk.Entry(window, show=None)entry.pack()#创建文本label = tk.Label(window , text='圆:oval;线:line;扇形:arc;矩形 :rect')label.pack() #打包#向下移动def moveit(): obj = entry.get() #获取输入框的参数,移动那个图形 if obj =='rect': canvas.move(rect,0,2) #第一个参数是图形 elif obj == 'arc': canvas.move(arc, 0, 2) # 第一个参数是图形 elif obj =='oval': canvas.move(oval, 0, 2) # 第一个参数是图形 elif obj == 'line': canvas.move(line, 0, 2)#向上移动def moveup(): obj = entry.get() # 获取输入框的参数,移动那个图形 if obj =='rect': canvas.move(rect,0,-2) #第一个参数是图形 elif obj == 'arc': canvas.move(arc,0,-2) # 第一个参数是图形 elif obj =='oval': canvas.move(oval,0,-2) # 第一个参数是图形 elif obj == 'line': canvas.move(line,0,-2)#向左移动def moveleft(): obj = entry.get() # 获取输入框的参数,移动那个图形 if obj =='rect': canvas.move(rect, -2 ,0) #第一个参数是图形 elif obj == 'arc': canvas.move(arc, -2 ,0) # 第一个参数是图形 elif obj =='oval': canvas.move(oval, -2 ,0) # 第一个参数是图形 elif obj == 'line': canvas.move(line, -2, 0)#向右移动def moveright(): obj = entry.get() # 获取输入框的参数,移动那个图形 if obj =='rect': canvas.move(rect,2,0) #第一个参数是图形 elif obj == 'arc': canvas.move(arc, 2,0) # 第一个参数是图形 elif obj =='oval': canvas.move(oval, 2,0) # 第一个参数是图形 elif obj == 'line': canvas.move(line , 2, 0)#创建一个Buttonb=tk.Button(window,text='下',command=moveit)b.place(x=120,y=280)up=tk.Button(window,text='上',command=moveup)up.place(x=120,y=220)left=tk.Button(window,text='左',command=moveleft)left.place(x=80,y=250)right=tk.Button(window,text='右',command=moveright)right.place(x=160,y=250)##显示出来window.mainloop()四、升级-绑定键盘事件
增加键盘绑定事件:
# 实现键盘绑定window.bind("", moveit) #第二个参数传一个回调函数window.bind("", moveleft)window.bind("", moveright)window.bind("", moveup) 完整代码:
import tkinter as tkwindow = tk.Tk()window.title('my window')##窗口尺寸window.geometry('300x350')#新建画布canvas=tk.Canvas(window,bg='blue',height=150,width=300)#画线x0,y0,x1,y1=50,50,80,80line=canvas.create_line(x0,y0,x1,y1)#画⚪oval=canvas.create_oval(x0,y0,x1,y1,fill='red')#画一个扇形arc = canvas.create_arc(x0+30, y0+30, x1+30, y1+30, start=0, extent=90)#画一个矩形rect = canvas.create_rectangle(100, 30, 100+20, 30+20) canvas.pack()#创建文本框entry = tk.Entry(window, show=None)entry.pack()#创建文本label = tk.Label(window , text='圆:oval;线:line;扇形:arc;矩形 :rect')label.pack() #打包#向下移动def moveit(event): obj = entry.get() #获取输入框的参数,移动那个图形 if obj =='rect': canvas.move(rect,0,2) #第一个参数是图形 elif obj == 'arc': canvas.move(arc, 0, 2) # 第一个参数是图形 elif obj =='oval': canvas.move(oval, 0, 2) # 第一个参数是图形 elif obj == 'line': canvas.move(line, 0, 2)#向上移动def moveup(event): obj = entry.get() # 获取输入框的参数,移动那个图形 if obj =='rect': canvas.move(rect,0,-2) #第一个参数是图形 elif obj == 'arc': canvas.move(arc,0,-2) # 第一个参数是图形 elif obj =='oval': canvas.move(oval,0,-2) # 第一个参数是图形 elif obj == 'line': canvas.move(line,0,-2)#向左移动def moveleft(event): obj = entry.get() # 获取输入框的参数,移动那个图形 if obj =='rect': canvas.move(rect, -2 ,0) #第一个参数是图形 elif obj == 'arc': canvas.move(arc, -2 ,0) # 第一个参数是图形 elif obj =='oval': canvas.move(oval, -2 ,0) # 第一个参数是图形 elif obj == 'line': canvas.move(line, -2, 0)#向右移动def moveright(event): obj = entry.get() # 获取输入框的参数,移动那个图形 if obj =='rect': canvas.move(rect,2,0) #第一个参数是图形 elif obj == 'arc': canvas.move(arc, 2,0) # 第一个参数是图形 elif obj =='oval': canvas.move(oval, 2,0) # 第一个参数是图形 elif obj == 'line': canvas.move(line , 2, 0)#创建一个Buttonb=tk.Button(window,text='下',command=moveit)b.place(x=120,y=280)up=tk.Button(window,text='上',command=moveup)up.place(x=120,y=220)left=tk.Button(window,text='左',command=moveleft)left.place(x=80,y=250)right=tk.Button(window,text='右',command=moveright)right.place(x=160,y=250)# 实现键盘绑定window.bind("", moveit) #第二个参数传一个回调函数window.bind("", moveleft)window.bind("", moveright)window.bind("", moveup)##显示出来window.mainloop() 看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
参数
图形
移动
输入
文本
扇形
矩形
键盘
画布
尺寸
按钮
事件
代码
函数
帮助
不同
清楚
上下左右
上下
任务
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发原理阐述
网络安全和网络生态
贵州生鲜专用软件开发
软件开发计算机培训学校招生
若站点服务器支持安全套
数据库开发者版密钥
进京服务器核酸检测
资料存到小米服务器安全吗
简单的连接数据库登录系统
ZZDBASE创建数据库
中标麒麟服务器版多少钱
高职计算机网络技术课程标准
网络技术那些赚钱
sql数据库定时备份语句
计算机网络技术的工作经历
网络安全法律主题班会
2021服务器市场半年总结
上海网信办 网络技术处
软件开发的技术评审目的
网络技术基础dte术语
武安软件开发技术在线咨询
河北智能软件开发项目信息
数据库数据重复值怎么设置
数据库中修改的函数是哪个
软件开发一般学习多久
组态王连接网络sql数据库
把闲置的主机做服务器
专业11选5软件开发
即将上市的互联网科技股
安装数据库提示密码强度不够