千家信息网

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()

    看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

    0