Python tkinter -- 第18章 画布控件之线段(line)

news2024/11/18 15:28:37

**18.2.17 create_line(coords, options)
根据 coords 给定的坐标,在画布上创建一条或多条线段。 如果给定的坐标超过两个点,则会首尾相连变成一条折线。

#直线
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
b1.create_line(50,50,100,100,width=5)
b1.pack()
root.mainloop()
#折线
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
b1.create_line(50,50,100,100,150,50,width=5)
b1.pack()
root.mainloop()

结果:
在这里插入图片描述
在这里插入图片描述
说明:只输入2个点的坐标,create_line()绘制的是线段,而超过两个点的坐标,绘制的就是折线。

(1)coords:指定坐标。可以是多组坐标。
(2)options 选项的具体含义:

选项含义
activedash当鼠标经过线段对象时候,绘制虚线
activefill当鼠标经过线段对象时候,线段显示的颜色
activestipple当鼠标经过线段对象时候,指定填充的位图
activewidth当鼠标经过线段对象时候,指定边框的宽度
arrow默认线段是不带箭头的,可以通过设置该选项添加箭头到线段中
FIRST:表示添加箭头到线段开始的位置
LAST:表示添加箭头到线段结束的位置
BOTH:表示两端均添加箭头
arrowshape用一个三元组 (a, b, c) 来指定箭头的形状, a, b, c 分别代表箭头的填充长度、长度和宽度。
capstyle指定线段两端的样式,该选项的值可以是:
BUTT:线段的两段平切于起点和终点
PROJECTING:线段的两段在起点和终点的位置分别延长一半宽度选项设置的长度
ROUND:线段的两段在起点和终点的位置分别延长一半宽度选项设置的长度并以圆角绘制
默认值是 BUTT
dash绘制虚线
dashoffset此参数不起作用
disableddash当线段对象状态为 DISABLE 的时候,绘制虚线
disabledfill当线段对象状态为 DISABLE 的时候,线段显示的颜色
disabledstipple当线段对象状态为 DISABLE 的时候,指定填充的位图
disabledwidth当画布对象状态为 DISABLE 的时候,指定边框的宽度
fill 指定填充的颜色,空字符串表示透明
joinstyle指定当绘制两个相邻线段之间接口的样式,该选项的值可以是:
ROUND:以连接点为圆心,1/2 宽度选项设置的长度为半径绘制圆角
BEVEL:在连接点处对两线段的夹角平切
MITER:沿着两线段的夹角延伸至一个点
默认值是 ROUND
offset指定填充位图的偏移,该选项的值可以是:“x,y”, “#x,y”, N, NE, E, SE, S, SW, W, NW, CENTER
smooth该选项的值为 True 时,绘制曲线。默认值为 False
splinesteps当绘制曲线的时候,该选项指定由多少条折线来构成曲线,默认值是 12。只有当 smooth 选项为 True 时该选项才能生效
state指定该线段对象的状态,可以是 NORMAL,DISABLED(不可用,不响应事件)和 HIDDEN(隐藏)。默认值是 NORMAL
stipple指定一个位图用于填充线段。默认值是空字符串,表示实心
tags为创建的线段对象添加标签
width指定边框的宽度
18.2.17.1 activedash
鼠标经过线段的时候,显示虚线。如何显示虚线,见18.2.14.7的定义。
18.2.17.2 activefill
鼠标经过线段的时候,线段的颜色。
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
b1.create_line(10,20,160,120,width=25,activefill='red')
b1.pack()
root.mainloop()

结果:
在这里插入图片描述
18.2.17.3 activestipple
鼠标经过线段的时候,线段底纹的bitmap

import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
b1.create_line(10,20,160,120,width=25,
               activestipple='error')
b1.pack()
root.mainloop()

结果:
在这里插入图片描述
18.2.17.4 activewidth
鼠标经过线段的时候,外框的宽度。

import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
b1.create_line(10,20,160,120,width=5,activewidth=20)
b1.pack()
root.mainloop()

结果:
在这里插入图片描述
18.2.17.5 arrow
设定线段是否带有箭头。默认是没有箭头的。线段的箭头有三种实现形式:
(1) FIRST:线段开始的位置有箭头
(2) LAST:线段结束的位置有箭头
(3) BOTH:线段的两端都有箭头

import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
b1.create_line(20,10,20,120,width=5,arrow='')
b1.create_line(50,10,50,120,width=5,arrow=tk.FIRST)
b1.create_line(80,10,80,120,width=5,arrow=tk.LAST)
b1.create_line(120,10,120,120,width=5,arrow=tk.BOTH)
b1.pack()
root.mainloop()

结果:
在这里插入图片描述
18.2.17.6 arrowshape
使用一个含有三个参数的元组(d1,d2,d3)来定义箭头的形状。d1,d2,d3分别代表填充长度,箭头长度,箭头宽度。

import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
b1.create_line(10,20,160,120,width=5,arrow=tk.FIRST,
               arrowshape=(15,20,10))
b1.pack()
root.mainloop()

结果:
在这里插入图片描述
18.2.17.7 capstyle
capstyle是定义线段的末端的形状。一共有三种情况:
(1)BUTT
这种情况是线段的端点就是定义的起始点。并且线段是平齐的。见示例的第一个线段。
(2)PROJECTING
这种情况的端点是在定义的起始点上加上线段宽度的一半。线段的末端是平齐的。见示例的第二个线段。
(3)ROUND
这种情况的线段末端是个半圆形。见示例的第三个线段。

import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
b1.create_line(50,50,50,120,width=50,fill='red',
               capstyle=tk.BUTT)
b1.create_line(120,50,120,120,width=50,fill='green',
               capstyle=tk.PROJECTING)
b1.create_line(190,50,190,120,width=50,fill='blue',
               capstyle=tk.ROUND)
b1.pack()
root.mainloop()

结果:
在这里插入图片描述
18.2.17.8 dash
绘制虚线。虚线的定义见18.2.14.7节。
18.2.17.9 dashoffset
此参数不起作用。
18.2.17.10 disableddash
当线段的状态是tk.DISABLED的时候,显示虚线。

import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
def state():
    b1.itemconfigure(line1,state=tk.DISABLED)
b2=tk.Button(root,text='Disabled',command=state)
b2.pack()
line1=b1.create_line(50,50,50,120,width=5,
                     disableddash=1)
b1.pack()
root.mainloop()

结果:
在这里插入图片描述
说明:点击’Disabled’按钮,实线线段会显示为虚线。
18.2.17.11 disabledfill
当线段的状态是tk.DISABLED的时候,线段的颜色。用法参见18.2.17.2 activefill。
18.2.17.12 disabledstipple
当线段的状态是tk.DISABLED的时候,线段填充的位图。用法参见18.2.17.3 activestipple。
18.2.17.13 disabledwidth
当线段的状态是tk.DISABLED的时候,线段的宽度。用法参见18.2.17.4 activewidth。
18.2.17.14 fill
线段的填充颜色。

import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
line1=b1.create_line(50,50,50,120,width=5,fill='red')
b1.pack()
root.mainloop()

结果:
在这里插入图片描述
18.2.17.15 joinstyle
此参数定义线段的交汇模式。线段交汇的模式有三种:
(1)ROUND:以连接点为圆心,1/2 width 选项设置的长度为半径绘制圆角
在这里插入图片描述
(2)BEVEL:在连接点处对两线段的夹角平切
在这里插入图片描述
(3)MITER:沿着两线段的夹角延伸至一个点
在这里插入图片描述

import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
b1.create_line(260,180,60,180,140,90,width=40,
               joinstyle='round')
b1.pack()
root.mainloop()
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
b1.create_line(260,180,60,180,140,90,width=40,
               joinstyle='bevel')
b1.pack()
root.mainloop()
import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
b1.create_line(260,180,60,180,140,90,width=40,
               joinstyle='miter')
b1.pack()
root.mainloop()

结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
18.2.17.16 offset
使用bitmap作为底纹填充时候的如何放置bitmap。可以使用的方法有:
(1)‘x,y’,’#x,y’:按照屏幕的坐标点开始放置bitmap,并铺满全部的线段区域,其中x,y为坐标值。
(2)N,E,S,W,NE,NW,SE,SW,CENTER等取值。
N:bitmap的顶部中间点,放置在线段的顶部中间点。举例来说,就是把bitmap的放置位置为顶部的中间点放置在(50,20)的坐标处,并按照此种方法,放置其他的bitmap,直到充满整个线段。
S: bitmap的底部中间点,放置在线段的底部中间点。
NE:bitmap的右上角坐标点,放置在线段的顶部中间点。
NW: bitmap的左上角坐标点,放置在线段的顶部中间点。
SE:bitmap的右下角坐标点,放置在线段的底部中间点
SW:bitmap的左下角坐标点,放置在线段的底部中间点
E: bitmap的右侧中间点,放置在线段的中心点。
W:bitmap的左侧中间点,放置在线段的中心点。
CENTER:bitmap的中间点,放置在线段的中心点。

import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
line1=b1.create_line(50,20,50,220,width=80,
                     stipple='@x.xbm',offset='70,80')
line2=b1.create_line(150,20,150,220,width=80)
b1.pack()
root.mainloop()

结果:
在这里插入图片描述
18.2.17.17 smooth
是否光滑折线。针对创建多点线段的情况,可以生成折线,也可以生成曲线。

import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
line1=b1.create_line(20,40,50,70,80,40,110,
                     70,140,40,width=10)
line2=b1.create_line(20,90,50,120,80,90,110,120,
                     140,90,width=10,smooth=True)
b1.pack()
root.mainloop()

结果:
在这里插入图片描述
说明:line2设置了smooth=True,生成的就是曲线。这就是smooth的作用。
18.2.17.18 splinesteps
当smooth=True时,如何光滑曲线?可以靠splinesteps调节。此参数定义线段2个点之间的光滑曲线的步长,点数越多,曲线越光滑。

import tkinter as tk
root=tk.Tk()
root.geometry('320x240')
b1=tk.Canvas(root)
line1=b1.create_line(20,40,50,70,80,40,110,70,140,40,
                     width=10,smooth=True,splinesteps=2)
line2=b1.create_line(20,90,50,120,80,90,110,120,140,90,
                     width=10,smooth=True,splinesteps=10)
b1.pack()
root.mainloop()

结果:
在这里插入图片描述
说明:splinesteps定义的步长不同,曲线的光滑程度不一样。line2明显比line1光滑许多。
18.2.17.19 state
指定图案的状态。有三种:
(1)NORMAL。正常状态,可见,可选中,绑定的函数可以调用
(2)DISABLED。禁止状态,可见,但是不可以选中,绑定的回调函数不起作用
(3)HIDDEN。隐藏状态。不可见。
18.2.17.20 stipple
定义填充线段的位图。用法在offset中已经有说明。
18.2.17.21 tags
指定线段标签,相当于别名。也可以通过其他的方式添加标签
18.2.17.22 width
定义线段的宽度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/82469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]JAVA毕业设计疫情下图书馆管理系统(系统+LW)

[附源码]JAVA毕业设计疫情下图书馆管理系统(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目…

正点原子-freeRTOS

裸机与操作系统的区别 1、操作系统可以实现多线程,虽然同一时间只能做一件事但是切换很快,裸机要轮流执行很慢 2、操作系统可以抢占线程,裸机只能使用中断实现,很慢,不实时 3、操作系统在等待延时的时候&#xff0c…

进程/线程篇

1.进程 1.1.进程PCB PCB是进程存在的唯一标识:进程消失了,PCB也随之消失 1.1.1.PCB包含哪些信息 进程描述信息 进程标识符:标识各个进程,每个进程有唯一的标识符用户标识符:进程归属的用户,用户标识符主…

cmake基础到实战

cmake从基础到实站 cmake官方教程翻译版 CMake Cookbook中文版 cmake 备忘录 需要注意的一点:QT6采用cmake作为编译系统 CMake是一种跨平台编译工具,CMake主要是编写CMakeLists.txt文件,然后通过cmake命令将CMakeLists.txt文件转化为make所需…

生信工作流框架搭建 | 03-nextflow与AWS批量计算

目录生信工作流框架搭建 | 03-nextflow与AWS Batch前情提要批量计算基本概念批量计算服务(Batch Computing Service)是一种适用于大规模并行批处理作业的分布式云服务。术语表AWS 构建如果你使用除大陆外的区域如果你恰好在EU或者Ireland如果你使用大陆区…

人为什么会穷,人穷的原因是什么

大家好,我是蝶衣王的小编,今天分享一下人为什么会穷 你玩的有多脏,你就有多成功。这里指的脏!​不是传统意义上的脏,而是你是不是那种死心眼。 ​ 小时候都背过三字经,说到人之初,性本善。但是…

spring源码-bean的后置处理器

BeanPostProcessor BeanPostProcessor也称为Bean后置处理器,它是Spring中定义的接口,在Spring容器的创建过程中(具体为Bean初始化前后)会回调BeanPostProcessor中定义的两个方法。 BeanPostProcessor的源码如下: public interf…

FFU安装条件及八大步骤详解

FFU安装条件及八大步骤(FFU过滤器) FFU安装的条件、环境及安装人员的服饰要求: 温 度: 5℃~45℃ 相对湿度:不大于85%(35℃) 大气压力:86Kpa~106Kpa zui大尘埃浓度:3500粒/升(尘埃粒径不大于0.5um) 电 源:220V 50…

详解 TS 中的子类型兼容性

简介 在写 TypeScript 代码时经常遇到类型检查不通过的问题,这些问题根据编译器给出的错误提示以及修改建议多数可以快速修复。本文讲解的内容是编译器进行类型检查时的兼容性相关检查规则,这些规则在 TypeScript 语言背后默默发挥作用。不了解这些规则…

艾美捷寡聚脱氧核苷酸CpG ODN:ODN 1668

艾美捷CpG ODN:ODN 1668:具有硫代磷酸酯骨架的CpG寡脱氧核苷酸(B型)。小鼠TLR9(Toll样受体9)的特异性配体。 艾美捷Enzo CpG ODN:ODN 1668详细信息: 序列:5-tccatgtgtcc…

Akka 学习(九)Akka Cluster

参考文章 Gitter Chat,Akka 在线交流平台Akka Forums,Akka 论坛Akka in GitHub,Akka 开源项目仓库Akka Official Website,Akka 官网Akka Java API,Akka 应用程序编程接口《Akka入门与实践》 [加]Jason Goodwin&#x…

AI创业时代!这9个方向有钱途;AIGC再添霸榜应用Lensa;美团SemEval2022冠军方法分享;医学图像处理工具箱… | ShowMeAI资讯日报

👀日报合辑 | 🎡AI应用与工具大全 | 🔔公众号资料下载 | 🍩韩信子 📢 2023年9个有前途的 AI 创业方向 https://www.aiplusinfo.com/blog/9-promising-artificial-intelligence-startup-ideas-for-2023/ 2022年&#x…

央视广告怎么做,做好央视广告的关键点有哪些

企业品牌打算投放央视广告,首先想到的是如何做才更有效果,往往本身就比较困惑。公司应该投入多少资金?应选用何种广告投放方案?有时公司内部的观点也是不同的。尤其是面对广告公司提供的众多方案,让负责人看着都头疼&a…

Tos-GPR-AMC,117961-27-0,标记肽Tos-GPR-7-氨基-4-甲基香豆素

胰蛋白酶和凝血酶的荧光底物 Tos-GPR-AMC, fluorogenic substrate for trypsin and thrombin. Kinetic data for Thrombin: kcat 180, Km 310 uM. 编号: 190611中文名称: 标记肽Tos-GPR-7-氨基-4-甲基香豆素英文名: Tos-Gly-Pro-Arg-AMCCAS号: 117961-27-0单字母: Tos-GPR-AM…

代码随想录训练营第6天

专题:哈希表 题目:有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 例如 输入: s "anagram", t "nagaram" 输出: true 说明: 你可以假设字符串只包含小写字母。 题目理解&…

av_interleaved_write_frame():Broken pipe

使用FFmpeg命令rtsp推流到Docker中MediaServer服务器,15秒timeout一到就会打印错误信息,如下图: av_interleaved_write_frame():Broken pipe 命令中指定rtsp传输方式为tcp(-rtsp_transport tcp ),虽然不会…

第二证券|锂电起火风险完美解决?美科学家研发新型超高盐度电解质

现在,研讨人员正致力于以各种方式改善电池技能,其中最重要的是处理可燃性问题。 美国科学家们近期研宣布了一种新的电解质配方,就能够以一种十分有出路的方式处理这一问题,依托额定的盐含量来防止有问题发生的化学反应。 众所周知…

[附源码]JAVA毕业设计疫情期间高校师生外出请假管理系统录屏(系统+LW)

[附源码]JAVA毕业设计疫情期间高校师生外出请假管理系统录屏(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&am…

婚礼策划预约小程序开发,拓展客户人群

婚礼对于所有人来说都是非常重要的一件事,是人生中最值得回忆的美好场景。在经济水平的不断提高下,人们在结婚之前都要找专业团队对婚礼进行策划,让婚礼更加完美,正因如此,婚礼策划行业得到了迅速发展。但是从众多策划…

Zabbix-proxy安装(zabbix 6.0LTS)

关于zabbix 系列的博文我已经很久没有更新了,主要原因是最近太忙了。如果读者诸君有认真阅读我前面的文章并亲自实践过的话,相信你肯定会大有收获的。到目前为止zabbix 的基础知识在我的博文中基本已经全都涉及到了,至于如何运用,…