Python 3 - Tkinter 画布

  • 简述

    Canvas 是一个矩形区域,用于绘制图片或其他复杂的布局。您可以在 Canvas 上放置图形、文本、小部件或框架。
  • 句法

    这是创建此小部件的简单语法 -
    
    w = Canvas ( master, option = value, ... )
    
  • 参数

    • master− 这代表父窗口。
    • options− 这是此小部件最常用选项的列表。这些选项可以用作以逗号分隔的键值对。
    序号 选项和描述
    1
    bd
    以像素为单位的边框宽度。默认值为 2。
    2
    bg
    正常的背景颜色。
    3
    confine
    如果为 true(默认值),则画布不能滚动到滚动区域之外。
    4
    cursor
    画布中使用的光标,如箭头、圆、点等。
    5
    height
    Y 维度中画布的大小。
    6
    highlightcolor
    焦点突出显示的颜色。
    7
    relief
    Relief 指定边框的类型。其中一些值为 SUNKEN、RAISED、GROOVE 和 RIDGE。
    8
    scrollregion
    一个元组 (w, n, e, s),它定义画布可以滚动的区域有多大,其中 w 是左侧,n 是顶部,e 是右侧,s 是底部。
    9
    width
    X 维度中画布的大小。
    10
    xscrollincrement
    如果将此选项设置为某个正尺寸,则画布只能定位在该距离的倍数上,并且该值将用于按滚动单位滚动,例如当用户单击滚动条末端的箭头时。
    11
    xscrollcommand
    如果画布是可滚动的,这个属性应该是水平滚动条的 .set() 方法。
    12
    yscrollincrement
    像 xscrollincrement 一样工作,但控制垂直移动。
    13
    yscrollcommand
    如果画布是可滚动的,这个属性应该是垂直滚动条的 .set() 方法。
    画布小部件可以支持以下标准项目 -
    arc . 创建一个弧形项,它可以是和弦、扇形切片或简单的弧形。
    
    coord = 10, 50, 240, 210
    arc = canvas.create_arc(coord, start = 0, extent = 150, fill = "blue")
    
    image .创建一个图像项,它可以是 BitmapImage 或 PhotoImage 类的实例。
    
    filename = PhotoImage(file = "sunshine.gif")
    image = canvas.create_image(50, 50, anchor = NE, image = filename)
    
    line .创建订单项。
    
    line = canvas.create_line(x0, y0, x1, y1, ..., xn, yn, options)
    
    oval .在给定坐标处创建一个圆或椭圆。它需要两对坐标;椭圆形边界矩形的左上角和右下角。
    
    oval = canvas.create_oval(x0, y0, x1, y1, options)
    
    polygon .创建必须至少具有三个顶点的多边形项。
    
    oval = canvas.create_polygon(x0, y0, x1, y1,...xn, yn, options)
    
  • 例子

    自己尝试以下示例 -
    
    # !/usr/bin/python3
    from tkinter import *
    from tkinter import messagebox
    top = Tk()
    C = Canvas(top, bg = "blue", height = 250, width = 300)
    coord = 10, 50, 240, 210
    arc = C.create_arc(coord, start = 0, extent = 150, fill = "red")
    line = C.create_line(10,10,200,200,fill = 'white')
    C.pack()
    top.mainloop()
    
  • 结果

    执行上述代码时,会产生以下结果 -
    传统帆布