返回顶部
首页 > 资讯 > 后端开发 > Python >python使用canvas怎么实现移动并绑定键盘
  • 316
分享到

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

2023-06-22 04:06:10 316人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

python使用canvas怎么实现移动并绑定键盘,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、任务用多个按钮或者按钮+文本框实现不同物体(椭圆,长方形,扇

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("<KeyPress-Down>", moveit)  #第二个参数传一个回调函数window.bind("<KeyPress-Left>", moveleft)window.bind("<KeyPress-Right>", moveright)window.bind("<KeyPress-Up>", 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("<KeyPress-Down>", moveit)  #第二个参数传一个回调函数window.bind("<KeyPress-Left>", moveleft)window.bind("<KeyPress-Right>", moveright)window.bind("<KeyPress-Up>", moveup)##显示出来window.mainloop()

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

    --结束END--

    本文标题: python使用canvas怎么实现移动并绑定键盘

    本文链接: https://lsjlt.com/news/302347.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • python使用canvas怎么实现移动并绑定键盘
      python使用canvas怎么实现移动并绑定键盘,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、任务用多个按钮或者按钮+文本框实现不同物体(椭圆,长方形,扇...
      99+
      2023-06-22
    • 详解python使用canvas实现移动并绑定键盘
      目录一、任务二、实现(1)导库并创建画布(2)画图形(3)创建按钮和文本框(4)功能实现三、完整代码四、升级—绑定键盘事件总结一、任务 用多个按钮或者按钮+文本框实现不同物体(椭圆...
      99+
      2024-04-02
    • 怎么在html5中实现移动端价格输入键盘
      今天就跟大家聊聊有关怎么在html5中实现移动端价格输入键盘,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。HTML:<div class="main&quo...
      99+
      2023-06-09
    • win7怎么用键盘控制鼠标移动
      Windows 7提供了一种使用键盘控制鼠标移动的方法,即使用“鼠标键盘中心”功能。下面是详细步骤: 打开“开始”菜单,然后选择“...
      99+
      2023-10-22
      win7
    • 怎么利用HTML5 Canvas制作键盘及鼠标动画
      这篇文章将为大家详细讲解有关怎么利用HTML5 Canvas制作键盘及鼠标动画,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   键盘控制小球移动   众所周知,我们...
      99+
      2024-04-02
    • python怎么实现监听键盘
      小编给大家分享一下python怎么实现监听键盘,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Python的优点有哪些1、简单易用,与C/C++、Java、C# 等...
      99+
      2023-06-14
    • EasyUI使用DataGrid实现动态列数据绑定
      最近,在对公司的一个老项目进行优化调整。有个使用的三方插件报表页面,一旦查询时间过长就会自动异常并使浏览器崩溃,由于这个插件只有个前人遗留的dll文件,实在看不懂里面的代码无从下手,...
      99+
      2024-04-02
    • 使用canvas怎么实现一个粒子动效
      本篇文章为大家展示了使用canvas怎么实现一个粒子动效,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。绘制刻度此例为小时刻度的绘制:表盘上共有12个小时,Math.PI为180&deg;,每...
      99+
      2023-06-09
    • vue.js中怎么实现动态数据绑定
      这期内容当中小编将会给大家带来有关vue.js中怎么实现动态数据绑定,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。从new一个实例开始谈起网上的很多源码解读都是从 Obs...
      99+
      2024-04-02
    • 使用canvas怎么实现一个github404动态效果
      使用canvas怎么实现一个github404动态效果?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。文件目录文件资源文件源码与图片在文章末尾给出代码网页的body部分这里给...
      99+
      2023-06-09
    • 使用HTML5怎么实现移动端开发
      这篇文章将为大家详细讲解有关使用HTML5怎么实现移动端开发,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1. 弹出数字键盘<!-- 有"#" ...
      99+
      2023-06-09
    • 怎么用html5的canvas移动浏览器实现图片压缩上传
      这篇文章主要介绍“怎么用html5的canvas移动浏览器实现图片压缩上传”,在日常操作中,相信很多人在怎么用html5的canvas移动浏览器实现图片压缩上传问题上存在疑惑,小编查阅了各式资料,整理出简单...
      99+
      2024-04-02
    • 使用Canvas怎么实现文字碰撞检测并抽稀
      使用Canvas怎么实现文字碰撞检测并抽稀?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。计算文字在 canvas 中所占据的范围// 计算文字所需的宽度var&n...
      99+
      2023-06-09
    • Swing中怎么使用方向键移动图片
      Swing中怎么使用方向键移动图片,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。整个JFrame采用null布局,图片放在Jlabel中,实现了使用键盘上面的方...
      99+
      2023-06-17
    • 怎么用python控制鼠标移动并点击
      你可以使用pyautogui库来控制鼠标移动和点击。首先,你需要安装pyautogui库。你可以使用以下命令来安装它:pip ins...
      99+
      2023-10-18
      python
    • 使用Canvas怎么实现鼠标跟随动画背景
      本篇文章给大家分享的是有关使用Canvas怎么实现鼠标跟随动画背景,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。如何制作动画常用的绘图动画的方式有以下几种:CSS3SVGCan...
      99+
      2023-06-09
    • 使用canvas怎么实现文本内容自动换行
      本篇文章为大家展示了使用canvas怎么实现文本内容自动换行,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。ctx: 画布的上下文环境content: 需要绘制的文本内容drawX: 绘制文本的x坐标...
      99+
      2023-06-09
    • 使用canvas怎么实现一个粒子动画背景
      使用canvas怎么实现一个粒子动画背景?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。创建canvas首先需要在需要展示粒子背景的父元素中创建一个canvas标签, 指定wid...
      99+
      2023-06-09
    • JavaScript怎么使用canvas实现flappy bird
      这篇“JavaScript怎么使用canvas实现flappy bird”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这...
      99+
      2023-07-05
    • 使用canvas怎么实现2d画布
      使用canvas怎么实现2d画布?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一. Canvas是啥< canvas > 是一个可以使用脚本(通常是js)来绘图的H...
      99+
      2023-06-09
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作