百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

软件测试|超好用超简单的Python GUI库——tkinter(十四)

liuian 2025-06-10 16:27 83 浏览

前言

我们知道我们可以使用pillow绘制不同形状的图形,但是我们能不能使用tkinter实现这个功能呢,当然可以,tkinter也可以实现图形的绘制,并且可以将绘制的图形添加到我们的GUI中。

我们可以通过tkinter的画布控件Canvas来实现绘制功能。

Canvas画布控件

Canvas 控件具有两个功能,首先它可以用来绘制各种图形,比如弧形、线条、椭圆形、多边形和矩形等,其次 Canvas 控件还可以用来展示图片(包括位图),我们将这些绘制在画布控件上的图形,称之为“画布对象”。

通过 Canvas 控件创建一个简单的图形编辑器,让用户可以达到自定义图形的目的,就像使用画笔在画布上绘画一样,可以绘制各式各样的形状,从而有更好的人机交互体验。

注:每一个画布对象都有一个“唯一身份ID”,这是 Tkinter 自动为其创建的,从而方便控制和操作这些画布对象。

基本属性

属性

方法

background(bg)

指定 Canvas 控件的背景颜色

borderwidth(bd)

指定 Canvas 控件的边框宽度

closeenough

1. 指定一个距离,当鼠标与画布对象的距离小于该值时,认为鼠标位于画布对象上
2. 该选项是一个浮点类型的值

confine

1. 指定 Canvas 控件是否允许滚动超出 scrollregion 选项设置的滚动范围,默认值为 True

selectbackground

指定当画布对象(即在 Canvas 画布上绘制的图形)被选中时的背景色

selectborderwidth

指定当画布对象被选中时的边框宽度(选中边框)

selectforeground

指定当画布对象被选中时的前景色

state

设置 Canvas 的状态:“normal” 或 “disabled”,默认值是 “normal”,注意,该值不会影响画布对象的状态

takefocus

指定使用 Tab 键可以将焦点移动到输入框中,默认为开启,将该选项设置为 False 避免焦点在此输入框中

width

指定 Canvas 的宽度,单位为像素

xscrollcommand

与 scrollbar(滚动条)控件相关联(沿着 x 轴水平方向)

xscrollincrement

1. 该选项指定 Canvas 水平滚动的“步长”
2. 例如 ‘3c’ 表示 3 厘米,还可以选择的单位有 ‘i’(英寸),‘m’(毫米)和 ‘p’(DPI,大约是 ‘1i’ 等于 ‘72p’)
3. 默认为 0,表示可以水平滚动到任意位置

yscrollcommand

与 scrollbar 控件(滚动条)相关联(沿着 y 轴垂直方向)

yscrollincrement

1. 该选项指定 Canvas 垂直滚动的“步长”
2. 例如 ‘3c’ 表示 3 厘米,还可以选择的单位有 ‘i’(英寸),‘m’(毫米)和 ‘p’(DPI,大约是 ‘1i’ 等于 ‘72p’)
3. 默认值是 0,表示可以垂直方向滚动到任意位置

示例

import tkinter as tk

window = tk.Tk()
window.title("拜仁慕尼黑")
window.geometry('400x200')
# 创库不允许改变
window.resizable(0,0)

# 创建画布
canvas = tk.Canvas(window,
                   bg='red',
                   height=200,
                   width=300)
canvas.pack()
window.mainloop()

运行代码,生成的界面如下:

Canvas控件绘图

Cansvas 控件提供了一系列绘制几何图形的常用方法,如下表:

方法

说明

create_line(x0, y0, x1, y1, … , xn, yn, options)

1. 根据给定的坐标创建一条或者多条线段;
2. 参数 x0,y0,x1,y1,…,xn,yn 定义线条的坐标;
3. 参数 options 表示其他可选参数

create_oval(x0, y0, x1, y1, options)

1. 绘制一个圆形或椭圆形;
2. 参数 x0 与 y0 定义绘图区域的左上角坐标;参数 x1 与 y1 定义绘图区域的右下角坐标;
3. 参数 options 表示其他可选参数

create_polygon(x0, y0, x1, y1, … , xn, yn, options)

1. 绘制一个至少三个点的多边形;
2. 参数 x0、y0、x1、y1、…、xn、yn 定义多边形的坐标;
3. 参数 options 表示其他可选参数

create_rectangle(x0, y0, x1, y1, options)

1. 绘制一个矩形;
2. 参数 x0 与 y0 定义矩形的左上角坐标;参数 x 与 y1 定义矩形的右下角坐标;
3. 参数 options 表示其他可选参数

create_text(x0, y0, text, options)

1. 绘制一个文字字符串
2. 参数 x0 与 y0 定义文字字符串的左上角坐标,参数 text 定义文字字符串的文字;
3. 参数 options 表示其他可选参数

create_image(x, y, image)

1. 创建一个图片
2. 参数 x 与 y 定义图片的左上角坐标
3. 参数 image 定义图片的来源,必须是 tkinter 模块的 BitmapImage 类或 PhotoImage 类的实例变量

create_bitmap(x, y, bitmap)

1. 创建一个位图
2. 参数 x 与 y 定义位图的左上角坐标
3. 参数 bitmap 定义位图的来源,参数值可以是 gray12、gray25、gray50、gray75、hourglass、error、questhead、info、warning 或 question,或者也可以直接使用 XBM(X Bitmap)类型的文件,此时需要在 XBM 文件名称前添加一个 @ 符号,例如 bitmap=@hello.xbm

create_arc(coord, start, extent, fill)

1. 绘制一个弧形
2. 参数 coord 定义画弧形区块的左上角与右下角坐标
3. 参数 start 定义画弧形区块的起始角度(逆时针方向)
4. 参数 extent 定义画弧形区块的结束角度(逆时针方向)
5. 参数 fill 定义填充弧形区块的颜色

注:上述方法都会返回一个画布对象的唯一 ID。关于 options 参数,下面会通过一个示例对经常使用的参数做相关介绍。(但由于可选参数较多,并且每个方法中的参数作用大同小异,因此对它们不再逐一列举)

Canvas 控件采用了坐标系的方式来确定画布中的每一点。一般情况下,默认主窗口的左上角为坐标原点,这种坐标系被称作为“窗口坐标系”,但也会存在另外一种情况,即画布的大小可能大于主窗口,当发生这种情况的时,可以采用带滚动条的 Canvas 控件,此时会以画布的左上角为坐标原点,我们将这种坐标系称为“画布坐标系”。

绘制图形

我们先绘制一下简单的线条来展示一下绘制图形的功能。

from tkinter import *
root = Tk()
# 设置窗口的背景颜色以区别画布
root.config(bg='blue')
root.title("拜仁慕尼黑")
root.geometry('450x350')

# 设置画布的背景颜色为白色
cv=Canvas(root,bg="white",width =300, height = 250)
# 将控件放置在主窗口中
cv.pack()
# 设置坐标点,此处可以元组的形式来设置坐标点
point=[(10,20),(20,30),(30,40),(40,100),(80,120),(150,90)]
# 创建画布,添加线条
# fill 参数指定填充的颜色,如果为空字符串,则表示透明
# dash 参数表示用来绘制虚线轮廓,元组参数,分别代表虚线中线段的长度和线段之间的间隔
# arrow 设线段的箭头样式,默认不带箭头,参数值 first 表示添加箭头带线段开始位置,last表示到末尾占位置,both表示两端均添加
# smooth 布尔值参数,表示是否以曲线的样式划线,默认为 False
# width 控制线宽
line1=cv.create_line(point,fill="green",dash=(1,1),arrow=LAST,width=5)
print('线段line1的画布id号:',line1)
line2=cv.create_line(point,fill="red",arrow=BOTH,smooth=TRUE,width=5)
print('线段line2的画布id号:',line2)
# 移动其中一条线段,只需要更改其坐标就可以,使用 coords()方法移动曲线
cv.coords(line2,50,30,25,35,35,40,50,120,60,170,10,180)
# 显示窗口
root.mainloop()

运行程序,绘制的图像如下:

总结

本文主要介绍了tkinter的画布控件canvas的基本属性,包括绘制简单的线条,后续我们将使用Canvas控件绘制更多图形。

相关推荐

搭建一个20人的办公网络(适用于20多人的小型办公网络环境)

楼主有5台机上网,则需要一个8口路由器,组网方法如下:设备:1、8口路由器一台,其中8口为LAN(局域网)端口,一个WAN(广域网)端口,价格100--400元2、网线N米,这个你自己会看了:)...

笔记本电脑各种参数介绍(笔记本电脑各项参数新手普及知识)

1、CPU:这个主要取决于频率和二级缓存,频率越高、二级缓存越大,速度越快,现在的CPU有三级缓存、四级缓存等,都影响相应速度。2、内存:内存的存取速度取决于接口、颗粒数量多少与储存大小,一般来说,内...

汉字上面带拼音输入法下载(字上面带拼音的输入法是哪个)

使用手机上的拼音输入法打成汉字的方法如下:1.打开手机上的拼音输入法,在输入框中输入汉字的拼音,例如“nihao”。2.根据输入法提示的候选词,选择正确的汉字。例如,如果输入“nihao”,输...

xpsp3安装版系统下载(windowsxpsp3安装教程)

xpsp3纯净版在采用微软封装部署技术的基础上,结合作者的实际工作经验,融合了许多实用的功能。它通过一键分区、一键装系统、自动装驱动、一键设定分辨率,一键填IP,一键Ghost备份(恢复)等一系列...

没有备份的手机数据怎么恢复

手机没有备份恢复数据方法如下1、使用数据线将手机与电脑连接好,在“我的电脑”中可以看到手机的盘符。  2、将手机开启USB调试模式。在手机设置中找到开发者选项,然后点击“开启USB调试模式”。  3、...

电脑怎么激活windows11专业版

win11专业版激活方法有多种,以下提供两种常用的激活方式:方法一:使用激活密钥激活。在win11桌面上右键点击“此电脑”,选择“属性”选项。进入属性页面后,点击“更改产品密钥或升级windows”。...

华为手机助手下载官网(华为手机助手app下载专区)

华为手机助手策略调整,已不支持从应用市场下载手机助手,目前华为手机助手是需要在电脑上下载或更新手机助手到最新版本,https://consumer.huawei.com/cn/support/his...

光纤线断了怎么接(宽带光纤线断了怎么接)

宽带光纤线断了可以重接,具体操作方法如下:1、光纤连接的时候要根据束管内,同色相连,同芯相连,按顺序进行连接,由大到小。一般有三种连接方法,分别是熔接、活动连接和机械连接。2、连接的时候要开剥光缆,抛...

深度操作系统安装教程(深度操作系统安装教程图解)
  • 深度操作系统安装教程(深度操作系统安装教程图解)
  • 深度操作系统安装教程(深度操作系统安装教程图解)
  • 深度操作系统安装教程(深度操作系统安装教程图解)
  • 深度操作系统安装教程(深度操作系统安装教程图解)
win7旗舰版和专业版区别(win7旗舰版跟专业版)

1、功能区别:Win7旗舰版比专业版多了三个功能,分别是Bitlocker、BitlockerToGo和多语言界面; 2、用途区别:旗舰版的功能是所有版本中最全最强大的,占用的系统资源,...

万能连接钥匙(万能wifi连接钥匙下载)

1、首先打开wifi万能钥匙软件,若手机没有开启WLAN,就根据软件提示打开WLAN开关;2、打开WLAN开关后,会显示附近的WiFi,如果知道密码,可点击相应WiFi后点击‘输入密码’连接;3、若不...

雨林木风音乐叫什么(雨林木风是啥)

雨林木风的创始人是陈年鑫先生。陈年鑫先生于1999年创立了雨林木风公司,其初衷是为满足中国市场对高品质、高性能电脑的需求。在陈年鑫先生的领导下,雨林木风以技术创新、产品质量和客户服务为核心价值,不断推...

aics6序列号永久序列号(aics6破解序列号)

关于AICS6这个版本,虽然是比较久远的版本,但是在功能上也是十分全面和强大的,作为一名平面设计师的话,AICS6的现有的功能已经能够应付几乎所有的设计工作了……到底AICC2019的功能是不是...

win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
  • win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
  • win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
  • win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
  • win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
手机可以装电脑系统吗(手机可以装电脑系统吗怎么装)

答题公式1:手机可以通过数据线或无线连接的方式给电脑装系统。手机安装系统需要一定的技巧和软件支持,一般需要通过数据线或无线连接的方式与电脑连接,并下载相应的软件和系统文件进行安装。对于大部分手机用户来...