python使用canvas怎么实现移动并绑定键盘
发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,python使用canvas怎么实现移动并绑定键盘,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、任务用多个按钮或者按
千家信息网最后更新 2024年11月11日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安全错误
数据库的锁怎样保障安全
全国网络交易数据库
网络安全宣传周活动记录表
asp 建立数据库
广西工贸计算机网络技术
激光雷达教学实训软件开发
软件开发生命周期哪几类
注重网络安全共享网络文明
网络安全测试华为培训课程
最新国家统计局数据库
魔兽tbc哪个服务器比较平衡
洛阳商通网络技术有限责任公司
数据库的左联表是怎么建立的
数据库字段定义为整型还是字符型
哪些大学有学网络安全的专业
中信银行软件开发中心北京
怎样提高局域网的网络安全
ipcc的碳活动因子数据库
数据库系统工程师一级
线上服务器格式有哪些
以太网有哪些网络技术组成
app软件开发聊天
cgrs数据库10049
临沂创先网络技术公司
拼多多网络技术开发公司
驾校预约管理系统的数据库
dns服务器修改了怎么办
可以打开安卓存档的数据库
药智网药品价格数据库
中央网络安全与信息安全
查看pgsql数据库默认表空间