使用Python中的tkinter模块作图的方法
发布时间 - 2026-01-10 22:54:05 点击率:次python简述:

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程。Python[1]已经成为最受欢迎的程序设计语言之一。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。自从2004年以后,python的使用率是呈线性增长。
tkinter模块介绍
tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.,Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
由于Tkinter是内置到python的安装包中、只要安装好Python之后就能import Tkinter库、而且IDLE也是用Tkinter编写而成、对于简单的图形界面Tkinter还是能应付自如。
八、显示文字
用create_text在画布上写字。这个函数只需要两个坐标(文字x和y的位置),还有一个具名参数来接受要显示的文字。例如:
>>> from tkinter import*>>> tk = Tk()>>> canvas = Canvas(tk,width=400,height=400)>>> canvas.pack()>>> canvas.create_text(150,100,text='Happy birthday to you')
create_text函数还有几个很有用的参数,比方说字体颜色等。在下面的代码中,我们调用create_text函数时使用了坐标(130,120),还有要显示的文字,以及红色的填充色:
canvas.create_text(130,120,text='Happy birthday to you!',fill='red')
我们还可以指定字体,方法是给出一个包含字体名和字体大小的元组。例如大小为20的Times字体就是('Times',20):
>>> canvas.create_text(150,150,text='Happy birthday',font=('Times',15))>>> canvas.create_text(200,200,text='Happy birthday',font=('Courier',22))>>> canvas.create_text(220,300,text='Happy birthday',font=('Couried',30))
九、显示图片
要用tkinter在画布上显示图片,首先要装入图片,然后使用canvas对象上的create_image函数。
这是我存在E盘上的一张图片:
我们可以这样来显示one.gif图片:
>>> from tkinter import*>>> tk = Tk()>>> canvas = Canvas(tk,width=400,height=400)>>> canvas.pack()>>> my_image = PhotoImage(file='E:\\FFOutput\\one.gif')>>> canvas.create_image(0,0,anchor = NW,image = my_image) >>> canvas.create_image(50,50,anchor = NW,image = my_image)
在第五行中,把图片装入到变量my_image中。坐标(0,0)/(50,50)是我们要显示图片的位置, anchor=NW让函数使用左上角(northwest 西北方)作为画图的起始点,最后一个具名参数image指向装入的图片。
注:用tkinter只能装入GIF图片,也就是扩展名是.gif的图片文件。
想要显示其他类型的图片,如PNG和JPG,需要用到其他的模块,比如Python图像库。
十、创建基本的动画
创建一个填了色的三角形,让它在屏幕上横向移动:
import timefrom tkinter import*tk = Tk()canvas = Canvas(tk,width=400,height=200)canvas.pack()canvas.create_polygon(10,10,10,60,50,35) ##创建三角形for x in range(0,60): canvas.move(1,5,0) ##把任意画好的对象移动到把x和y坐标增加给定值的位置 tk.update() ##强制tkinter更新屏幕(重画) time.sleep(0.05) ##让程序休息二十分之一秒(0.05秒),然后再继续
三角形横向移动
延伸一下,如果想让三角形沿对角线在屏幕上移动,我们可以第8行为:
import timefrom tkinter import*tk = Tk()canvas = Canvas(tk,width=400,height=400)canvas.pack()canvas.create_polygon(10,10,10,60,50,35) ##创建三角形for x in range(0,60): canvas.move(1,5,5) ##把任意画好的对象移动到把x和y坐标增加给定值的位置 tk.update() ##强制tkinter更新屏幕(重画) time.sleep(0.05) ##让程序休息二十分之一秒(0.05秒),然后再继续
三角形沿对角线移动
如果要让三角形在屏幕上沿对角线回到开始的位置,要用-5,-5(在结尾处加上这段代码)
import timefrom tkinter import*tk = Tk()canvas = Canvas(tk,width=400,height=400)canvas.pack()canvas.create_polygon(10,10,10,60,50,35) ##创建三角形for x in range(0,60): canvas.move(1,5,5) ##把任意画好的对象移动到把x和y坐标增加给定值的位置 tk.update() ##强制tkinter更新屏幕(重画) time.sleep(0.05) ##让程序休息二十分之一秒(0.05秒),然后再继续for x in range(0,60): canvas.move(1,-5,-5) tk.update() time.sleep(0.05)
对角线运动并回到初始位置
十一、让对象对操作有反应
我们可以用“消息绑定”来让三角形在有人按下某键时有反应。
要开始处理事件,我们首先要创建一个函数。当我们告诉tkinter将某个特定函数绑到(或关联到)某个特定事件上时就完成了绑定。
换句话说,tkinter会自动调用这个函数来处理事件。
例如,要让三角形在按下回车键时移动,我们可以定义这个函数:
def movetriangle(event): canvas.move(1,5,0)
这个函数只接受一个参数(event),tkinter用它来给函数传递关于事件的信息。现在我们用画布canvas上的bind_all函数来告诉tkinter当特定事件发生时应该调用这个函数。代码如下:
from tkinter import*tk = Tk()canvas = Canvas(tk,width=400,height=400)canvas.pack()canvas.create_polygon(10,10,10,60,50,35)def movetriangle(event): canvas.move(1,5,0)canvas.bind_all('<KeyPress-Return>',movetringle) ##让tkinter监视KeyPress事件,当该事件发生时调用movetriangle函数
那么我们如何根据按键的不同而改变三角形的方向呢?比如用方向键。
我们可以尝试改下movetriangle函数:
def movetriangle(event): if event.keysym == 'up': canvas.move(1,0,-3) ##第一个参数使画布上所画的形状的ID数字,第二个是对x(水平方向)坐标增加的值,第三个是对y(垂直方向)坐标增加的值 elif event.keysym == 'down': canvas.move(1,0,3) elif event.keysym == 'left': canvas.move(1,-3,0) else canvas.move(1,3,0)
最后代码汇总在一起为:
from tkinter import*tk = Tk()canvas = Canvas(tk,width=400,height=400)canvas.pack()canvas.create_polygon(10,10,10,60,50,35)def movetriangle(event): if event.keysym == 'Up': canvas.move(1,0,-3) ##第一个参数使画布上所画的形状的ID数字,第二个是对x(水平方向)坐标增加的值,第三个是对y(垂直方向)坐标增加的值 elif event.keysym == 'Down': canvas.move(1,0,3) elif event.keysym == 'Left': canvas.move(1,-3,0) else: canvas.move(1,3,0)canvas.bind_all('<KeyPress-Up>',movetriangle) ##让tkinter监视KeyPress事件,当该事件发生时调用movetriangle函数canvas.bind_all('<KeyPress-Down>',movetriangle)canvas.bind_all('<KeyPress-Left>',movetriangle)canvas.bind_all('<KeyPress-Right>',movetriangle)
方向键控制三角形的移动
十二、更多使用ID的方法
只要用了画布上面以create_开头的函数,它总会返回一个ID。这个函数可以在其他的函数中使用。
如果我们修改代码来把返回值作为一个变量保存,然后使用这个变量,那么无论返回值是多少,这段代码都能工作:
>>> mytriangle = canvas.create_polygon(10,10,10,60,50,35)>>> canvas.move(mytriangle,5,0)
我们可以用itemconfig来改变三角形的颜色,这需要把ID作为第一个参数:
>>> canvas.itemconfig(mytrigle,fill='bue') ##把ID为变量mytriangle中的值的对象的填充颜色改为蓝色
也可以给三角形一条不同颜色的轮廓线,同样适用ID作为第一个参数:
>>> canvas.itemconfig(mytrigle,outline='red')
总结做出了简单的动画。学会了如何用事件绑定来让图形响应按键,这在写计算机游戏时很有用。在tkinter中以create开头的函数是如何返回一个ID数字。
已经学习Python两天,最开始是想着是通过觉得用它写个动画或者画个图形比较方便,而且界面美观,比黑洞洞的dos窗口好多了,准备写个程序送个一女孩作为生日礼物(去年答应好的)。经过这两天的学习,我慢慢发觉了Python语言的优点,其最主要的就是易学,而且可以调用各种库。
以上所述是小编给大家介绍的使用Python中的tkinter模块作图的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# python
# tkinter模块
# tkinter
# python3使用tkinter实现ui界面简单实例
# Python Tkinter简单布局实例教程
# python的tkinter布局之简单的聊天窗口实现方法
# Python Tkinter基础控件用法
# 对python Tkinter Text的用法详解
# 详解python tkinter模块安装过程
# Python 窗体(tkinter)按钮 位置实例
# 基于python的Tkinter实现一个简易计算器
# python中tkinter简要教程(小白必看)
# 角形
# 第一个
# 我们可以
# 二十
# 然后再
# 绑定
# 可以用
# 其他的
# 这段
# 第二个
# 画好
# 要用
# 定值
# 要让
# 按下
# 第三个
# 用它
# 重画
# 小编
# 屏幕上
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
JavaScript中的标签模板是什么_它如何扩展字符串功能
如何破解联通资金短缺导致的基站建设难题?
如何为不同团队 ID 动态生成多个非值班状态按钮
Firefox Developer Edition开发者版本入口
如何在IIS中新建站点并配置端口与物理路径?
简历没回改:利用AI润色让你的文字更专业
微信小程序 require机制详解及实例代码
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
如何用搬瓦工VPS快速搭建个人网站?
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
Laravel如何使用Vite进行前端资源打包?(配置示例)
JavaScript如何实现倒计时_时间函数如何精确控制
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
进行网站优化必须要坚持的四大原则
Laravel如何集成Inertia.js与Vue/React?(安装配置)
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
浅述节点的创建及常见功能的实现
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
微信推文制作网站有哪些,怎么做微信推文,急?
Laravel如何与Pusher实现实时通信?(WebSocket示例)
C语言设计一个闪闪的圣诞树
JavaScript数据类型有哪些_如何准确判断一个变量的类型
Laravel如何为API生成Swagger或OpenAPI文档
Laravel如何为API编写文档_Laravel API文档生成与维护方法
北京网站制作的公司有哪些,北京白云观官方网站?
教你用AI润色文章,让你的文字表达更专业
C++时间戳转换成日期时间的步骤和示例代码
潮流网站制作头像软件下载,适合母子的网名有哪些?
什么是javascript作用域_全局和局部作用域有什么区别?
Laravel如何与Inertia.js和Vue/React构建现代单页应用
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
如何实现建站之星域名转发设置?
微信小程序 HTTPS报错整理常见问题及解决方案
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
音乐网站服务器如何优化API响应速度?
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
PHP 500报错的快速解决方法
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
怎么用AI帮你设计一套个性化的手机App图标?
C#如何调用原生C++ COM对象详解
如何用PHP工具快速搭建高效网站?

