千家信息网

python使用canvas怎么实现移动并绑定键盘

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,python使用canvas怎么实现移动并绑定键盘,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、任务用多个按钮或者按
千家信息网最后更新 2026年11月01日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安全错误 数据库的锁怎样保障安全 河南云网互联网络科技有限公司 互联网和科技技术 科技创新与互联网经济 互联网最新的科技 互联网巨头反垄断金融科技 碳银互联网科技有限公司 联恩商钥互联网科技有限公司 互联网科技创新企业排名 现代科技和互联网有关系吗 成都铂石互联网科技做什么的 花神(南京)互联网科技有限公司 燊美集互联网科技有限公司 世界互联网领先科技成果获奖 无锡工业互联网科技有限公司 富国互联网金融科技混合基金 互联网高科技行业有哪些企业 版纳互联网科技选哪家 互联网科技创新创业项目 互联网科技创业有什么好项目 每日互联网科技新闻 科技赋能下的互联网金融 科技与互联网 盈实互联网科技 深圳天众互联网科技公司 国外互联网科技网站 岳阳华臻互联网科技有限公司 知域互联网科技有限公司大骗子 健康食品互联网创新科技园项目 本届互联网博览会上的黑科技 世界互联网领先科技成果获奖
    0