千家信息网

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数据库默认表空间
    0