一、参数说明

参数 作用
background(bg) 指定 Canvas 的背景颜色
borderwidth(bd) 指定 Canvas 的边框宽度
closeenough 指定一个距离,当鼠标与画布对象的距离小于该值时,鼠标被认为在画布对象上
该选项是一个浮点类型的值
confine 指定 Canvas 组件是否允许滚动超出 scrollregion 选项指定的范围
默认值是 True
cursor 指定当鼠标在 Canvas 上飘过的时候的鼠标样式
height 指定 Canvas 的高度,单位是像素
width 指定 Canvas 的宽度
单位是像素
highlightbackground 指定当 Canvas 没有获得焦点的时候高亮边框的颜色
highlightcolor 指定当 Canvas 获得焦点的时候高亮边框的颜色
highlightthickness 指定高亮边框的宽度
relief 指定 Canvas 的边框样式
默认值是 "flat"
其他可以选择的值是 "sunken","raised","groove" 和 "ridge"
scrollregion 指定 Canvas 可以被滚动的范围
该选项的值是一个 4 元组(x1, y1, x2, y2)表示的矩形
selectbackground 指定当画布对象被选中时的背景色
selectborderwidth 指定当画布对象被选中时的边框宽度(选中边框)
selectforeground 指定当画布对象被选中时的前景色
state 设置 Canvas 的状态:"normal" 或 "disabled"
默认值是 "normal"
注意:该值不会影响画布对象的状态
takefocus 指定使用 Tab 键可以将焦点移动到输入框中
默认是开启的,可以将该选项设置为 False 避免焦点在此输入框中
xscrollcommand 与 scrollbar(滚动条)组件相关联(水平方向)
yscrollcommand 与 scrollbar(滚动条)组件相关联(垂直方向)

方法列表:

canvasx(screenx, gridspacing=None)
-- 将窗口坐标系的 X 坐标(screenx)转化为画布坐标系
-- 如果提供 gridspacing 参数,则转换结果将为该参数的整数倍

canvasy(screeny, gridspacing=None)
-- 将窗口坐标系的 Y 坐标(screenx)转化为画布坐标系
-- 如果提供 gridspacing 参数,则转换结果将为该参数的整数倍

create_arc(bbox, **options)
-- 根据 bbox (x1, y1, x2, y2) 创建一个扇形("pieslice")、弓形("chord")或弧形("arc")
-- 新创建的画布对象位于显示列表的顶端
-- 创建成功后返回该画布对象的 ID

create_bitmap(position, **options)

-- 在 position 指定的位置(x, y)创建一个位图对象
-- 创建成功后返回该位图对象的 ID

create_image(position, **options)

-- 在 position 指定的位置(x, y)创建一个图片对象
-- 创建成功后返回该图片对象的 ID

create_line(coords, **options)

-- 根据 coords 给定的坐标创建一条或多条线段
-- 如果给定的坐标多余两个点,则会首尾相连变成一条折线
-- 创建成功后返回该画布对象的 ID

create_oval(bbox, **options)

-- 根据限定矩形 bbox 绘制一个椭圆
-- 新创建的画布对象位于显示列表的顶端
-- 创建成功后返回该画布对象的 ID

create_polygon(coords, **options)

-- 根据 coords 给定的坐标绘制一个多边形
-- 新创建的画布对象位于显示列表的顶端
-- 创建成功后返回该画布对象的 ID

create_rectangle(bbox, **options)

-- 根据限定矩形 bbox 绘制一个矩形
-- 新创建的画布对象位于显示列表的顶端
-- 创建成功后返回该画布对象的 ID

create_text(position, **options)

-- 在 position 指定的位置(x, y)创建一个文本对象
-- 创建成功后返回该文本对象的 ID

create_window(position, **options)

-- 在 position 指定的位置(x, y)创建一个窗口组件
-- 创建成功后返回该窗口组件的 ID

二、示例代码

import tkinter as tk

window = tk.Tk()
# 设置窗口大小
winWidth = 600
winHeight = 400
# 获取屏幕分辨率
screenWidth = window.winfo_screenwidth()
screenHeight = window.winfo_screenheight() x = int((screenWidth - winWidth) / 2)
y = int((screenHeight - winHeight) / 2) # 设置主窗口标题
window.title("Canvas菜单参数说明")
# 设置窗口初始位置在屏幕居中
window.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y))
# 设置窗口图标
window.iconbitmap("./image/icon.ico")
# 设置窗口宽高固定
window.resizable(0, 0) canvas = tk.Canvas(window, width=200, height=200, bg="#fff")
canvas.pack(); # 画一条线
canvas.create_line(0, 100, 200, 100, fill="#f00")
# 画一个矩形
canvas.create_rectangle(50, 50, 150, 150, fill="blue")
# 画一个椭圆
canvas.create_oval(60, 60, 140, 140, fill="red")
# 画文字
canvas.create_text(100, 100, text = "python", fill="#fff")
window.mainloop()

  

三、效果图

Tkinter 之Canvas画布的更多相关文章

  1. tkinter之canvas(画布)

    画布的例子: from tkinter import * root=Tk() root.title('简易绘图') can=Canvas(root,width=400,height=300,bg='# ...

  2. pywin32获得tkinter的Canvas窗口句柄,并在上面绘图

    上一篇博文获得主窗口句柄使用的是root.frame或者通过子控件调用master.frame方法,但是子控件本身没有frame方法.那么怎么获得子控件的句柄呢?试过了很多办法,想过把Canvas当作 ...

  3. html 5 canvas画布整理

    1. 创建canvas画布<canvas id="myCanvas" width="800" height="800" >< ...

  4. 用html5的canvas画布绘制贝塞尔曲线

    查看效果:http://keleyi.com/keleyi/phtml/html5/7.htm 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...

  5. 【读书笔记《Android游戏编程之从零开始》】12.游戏开发基础(Canvas 画布)

    1.Canvas 画布 画布类 Canvas 封装了图形和图片绘制等内容,此类常用的函数说明如下: drawColor(int color) 作用:绘制颜色覆盖画布,常用于刷屏 参数:颜色值,也可用十 ...

  6. 关于使用Css设置Canvas画布大小的问题

    问题分析 我们在调整画布大小时,希望画布中的图形保持不变,只是改变画布本身的大小.但是如果使用Css设置画布大小,则会出现问题. 问题描述 如果使用Css设置Canvas画布的大小,则导致画布按比例缩 ...

  7. Particles.js基于Canvas画布创建粒子原子颗粒效果

    文章目录 使用方法 自定义参数 相关链接 Particles.js是一款基于HTML5 Canvas画布的轻量级粒子动画插件,可以设置粒子的形状.旋转.分布.颜色等属性,还可以动态添加粒子,效果非常炫 ...

  8. 自学HTML5第四节(canvas画布详解)

    canvas画布好像可是说是HTML5的精华了,一定要学好,嗯嗯,绚丽的东西就要从基础的开始.... 先看看啥玩意叫做canvas 什么是 Canvas? HTML5 的 canvas 元素使用 Ja ...

  9. “canvas画布仿window系统自带画图软件"项目的思考

    "canvas画布仿window系统自带画图软件"项目的思考 首先贴上DEMO图,并没有美化效果.对UI有要求的,请自带补脑技术. 思考一 在做项目的过程中,我发现"工具 ...

随机推荐

  1. IO模型之AIO代码及其实践详解

    一.AIO简介 AIO是java中IO模型的一种,作为NIO的改进和增强随JDK1.7版本更新被集成在JDK的nio包中,因此AIO也被称作是NIO2.0.区别于传统的BIO(Blocking IO, ...

  2. 使用browser-sync预览pandoc markdown???

    由于 pandoc markdown在sublime下面并不能很好的预览,因此可以直接 使用 pandoc build成html,然后借助下面的工具进行实时在浏览器里面预览 http://www.br ...

  3. 直接插入排序算法(java)

    直接插入排序是将未排序的数据插入至已排好序序列的合适位置. 具体流程如下: 1.首先比较数组的前两个数据,并排序: 2.比较第三个元素与前两个排好序的数据,并将第三个元素放入适当的位置: 3.比较第四 ...

  4. Android笔记(二十六) Android中的广播——BroadcastReceiver

    为了方便进行系统级别的消息通知,Android有一套类似广播的消息机制,每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就只会接收自己所关心的广播内容,这些广播可能是来自于系统,也可能是来自于 ...

  5. 第二篇:Python基本知识

    这一篇我们简单的介绍一下Python学习的基本知识-->Python文件是如何运行.Python文件打开通常会有两行注释,那么这两行注释是什么:上篇提到的字节码,这些字节码都存储在哪?即pyc文 ...

  6. CentOS7 安装记录

    起因是想自建一个本地笔记云存储,按照网上的教程搭建,卡在了其中的一个步骤上(文章见https://www.laobuluo.com/1542.html),卡在了如下图的位置,google了一番解决的办 ...

  7. Win10安装MySQL5.7版本 解压缩版方法

    1.下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 直接点击下载项 下载后: 2.可以把解压的内容随便放到一个目录,我的是如 ...

  8. RedisTemplate的key默认序列化器问题

    原文:https://blog.csdn.net/skymouse2002/article/details/80736577 redis的客户端换成了spring-boot-starter-data- ...

  9. Codeforces Round #582 (Div. 3)-G. Path Queries-并查集

    Codeforces Round #582 (Div. 3)-G. Path Queries-并查集 [Problem Description] 给你一棵树,求有多少条简单路径\((u,v)\),满足 ...

  10. P1078 文化之旅[最短路]

    题目背景 本题是错题,后来被证明没有靠谱的多项式复杂度的做法.测试数据非常的水,各种玄学做法都可以通过(比如反着扫),不代表算法正确.因此本题题目和数据仅供参考. 题目描述 有一位使者要游历各国,他每 ...