说明
一般来说,界面开发中,如果不是大型的软件,就不必用QT之类的实现,用Tkinter已经足够,然而即便是Tkinter规模不大,也需要一个系统专业的学习过程,本篇将是对Tkinter系列介绍的一篇博文。
七.Button
小部件
要在名为 的顶级窗口或框架中创建按钮
:parent
w= tk.Button( parent, option= value, ...)
构造函数返回新的Button
小部件。其选项包括:
表 5. Button
小部件选项
activebackground | 当按钮位于光标下方时的 背景颜色。 |
activeforeground | 当按钮位于光标下方时的 前景色 。 |
anchor | 文本在按钮上的位置。请参见 第 5.5 节“锚点”。例如, anchor=tk.NE 将文本放置在按钮的右上角。 |
bd 或者 borderwidth | 按钮外部边框的宽度;请参见第 5.1 节“尺寸”。默认值为两个像素。 |
bg 或者background | 正常背景颜色。 |
bitmap | 要在按钮上显示的 标准位图 之一的名称(而不是文本)。 |
command | 单击按钮时要调用的函数或方法。 |
cursor | 选择当鼠标 悬停在按钮上时要显示的光标。 |
default | tk.NORMAL 是默认值;tk.DISABLED 如果该按钮最初被禁用(变灰,对鼠标单击无响应),则 使用。 |
disabledforeground | 禁用按钮时使用的 前景色 。 |
fg 或者foreground | 正常前景色(文本)颜色。 |
font | 用于按钮标签的 文本字体。 |
height | 文本行(对于文本按钮)或像素(对于图像)的按钮高度。 |
highlightbackground | 当小部件没有焦点时焦点突出显示的颜色。 |
highlightcolor | 当小部件具有焦点时焦点突出显示的 颜色。 |
highlightthickness | 焦点高光 的厚度 。 |
image | 要在按钮上显示的 图像(而不是文本)。 |
justify | 如何显示多行文本:tk.LEFT 将每行左对齐;tk.CENTER 将它们居中;或tk.RIGHT 右对齐。 |
overrelief | 鼠标位于按钮上时使用的浮雕样式;默认救济是tk.RAISED 。请参见第 5.6 节“浮雕样式”。 |
padx | 文本左侧和右侧的额外填充。有关填充的可能值 ,请参见 第 5.1 节“尺寸” 。 |
pady | 文本上方和下方的额外填充。 |
relief | 指定按钮的浮雕类型(请参见第 5.6 节“浮雕样式”)。默认救济是tk.RAISED 。 |
repeatdelay | 请参阅repeatinterval 下文。 |
repeatinterval | 通常,当用户释放鼠标按钮时,按钮仅触发一次。如果您希望只要按住鼠标按钮就定期触发按钮,请将此选项设置为重复之间使用的毫秒数,并将 设置为开始重复之前要等待的毫秒数repeatdelay 。例如,如果您指定“ repeatdelay=500, repeatinterval=100 ”,则按钮将在半秒后触发,此后每隔十分之一秒触发一次,直到用户释放鼠标按钮。如果用户没有按住鼠标按钮至少几repeatdelay 毫秒,按钮将正常触发。 |
state | 将此选项设置为tk.DISABLED 灰显按钮并使其无响应。tk.ACTIVE 当鼠标悬停在其上时具有值。默认为tk.NORMAL . |
takefocus | 通常,键盘焦点确实会访问按钮(请参阅 第 53 节“焦点:路由键盘输入”),并且 空格字符的作用与鼠标单击相同,“按下”按钮。您可以将该takefocus 选项设置为零以防止焦点访问该按钮。 |
text | 按钮上显示的文本。使用内部换行符显示多个文本行。 |
textvariable | 它的一个实例StringVar() 与该按钮上的文本相关联。如果变量发生更改,新值将显示在按钮上。请参阅第 52 节“控制变量:小部件背后的值”。 |
underline | 默认值为-1 ,这意味着按钮上的文本字符不会带有下划线。如果非负,则相应的文本字符将带有下划线。例如,underline=1 将在按钮文本的第二个字符下划线。 |
width | 按钮的宽度,以字母(如果显示文本)或像素(如果显示图像)为单位。 |
wraplength | 如果该值设置为正数,则文本行将换行以适合该长度。有关可能的值,请参见第 5.1 节“尺寸”。 |
对象上的方法Button
:
.flash()
使按钮在活动颜色和正常颜色之间闪烁几次。让按钮保持原来的状态。如果按钮被禁用,则忽略。
.invoke()
调用按钮的command
回调,并返回该函数返回的内容。如果按钮被禁用或没有回调,则无效。
八.Canvas
小部件
画布是用于绘制图片或其他复杂布局的矩形区域。您可以在其上放置图形、文本、小部件或框架。有关在画布上创建对象的方法,请参阅以下部分:
-
.create_arc()
:椭圆的切片。请参见 第 8.7 节“Canvas弧形对象”。 -
.create_bitmap()
:位图形式的图像。请参见 第 8.8 节“Canvas位图对象”。 -
.create_image()
:图形图像。请参见第 8.9 节“Canvas图像对象”。 -
.create_line()
:一条或多条线段。请参见第 8.10 节“Canvas线对象”。 -
.create_oval()
:椭圆;也可以用它来绘制圆形,这是椭圆的一种特殊情况。请参见第 8.11 节“Canvas椭圆形物体”。 -
.create_polygon()
:多边形。请参见第 8.12 节“Canvas多边形对象”。 -
.create_rectangle()
: 一个长方形。请参见第 8.13 节“Canvas矩形对象”。 -
.create_text()
:文字注释。请参见第 8.14 节“Canvas文本对象”。 -
.create_window()
:矩形窗口。请参见第 8.15 节“Canvas窗口对象”。
创建一个Canvas
对象:
w= tk.Canvas( parent, option= value, ...)
构造函数返回新的Canvas
小部件。支持的选项包括:
表 6. Canvas
小部件选项
bd 或者 borderwidth | 画布外部边框的宽度;请参见第 5.1 节“尺寸”。默认值为两个像素。 |
bg 或者 background | 画布的 背景颜色。默认为浅灰色,约为'#E4E4E4' . |
closeenough | 指定鼠标float 与要在其中考虑的项目的距离必须有多近。默认值为 1.0。 |
confine | 如果为 true(默认值),则画布无法滚动到外部scrollregion (见下文)。 |
cursor | 画布中使用的光标。请参见第 5.8 节“光标”。 |
height | Y 维度画布的大小。请参见第 5.1 节“尺寸”。 |
highlightbackground | 当小部件没有焦点时焦点突出显示的颜色。请参见第 53 节“焦点:路由键盘输入”。 |
highlightcolor | 焦点突出显示的 颜色 。 |
highlightthickness | 焦点高光 的厚度 。默认值为 1。 |
relief | 画布的浮雕风格。默认为tk.FLAT . 请参见第 5.6 节“浮雕样式”。 |
scrollregion | 一个元组,定义画布可以滚动的区域有多大,其中 左侧、 顶部、 右侧和 底部在哪里。 (
|
selectbackground | 显示所选项目时使用的 背景颜色。 |
selectborderwidth | 所选项目周围使用的边框宽度。 |
selectforeground | 显示所选项目时 使用的 前景色。 |
takefocus | 通常,仅当为其设置了键盘绑定时,焦点(请参阅第 53 节“焦点:路由键盘输入”)才会使用 Tab 键循环浏览此小部件( 有关键盘绑定的概述,请参阅第 54 节“事件” )。如果将此选项设置为 1,焦点将始终访问此小部件。将其设置为 '' 以获得默认行为。 |
width | 画布在 X 维度上的大小。请参见第 5.1 节“尺寸”。 |
xscrollincrement | 通常,画布可以水平滚动到任何位置。xscrollincrement 您可以通过设置为零来获得此行为 。如果将此选项设置为某个正尺寸,则画布只能定位在该距离的倍数上,并且该值将用于按滚动单位滚动,例如当用户单击滚动条末端的箭头时。有关滚动单元的更多信息,请参阅第 22 节“Scrollbar小部件”。 |
xscrollcommand | 如果画布是可滚动的,则将此选项设置为 .set() 水平滚动条的方法。 |
yscrollincrement | 作用类似于xscrollincrement ,但控制垂直运动。 |
yscrollcommand | 如果画布是可滚动的,这个选项应该是 .set() 垂直滚动条的方法。 |
8.1. Canvas
坐标
由于画布可能比窗口大,并且配备了滚动条来在窗口中移动整个画布,因此每个画布有两个坐标系:
-
点的窗口坐标是相对于显示屏上出现画布的区域的左上角而言的。
-
点的画布坐标是相对于整个画布的左上角的。
8.2. Canvas
显示列表
显示列表是指画布上所有对象的顺序,从背景(显示列表的“底部”)到前景(“顶部”)。
如果两个对象重叠,则 显示列表中 上一个对象表示距离前景较近的一个,该对象将出现在重叠区域并遮挡下面的对象。默认情况下,新对象始终创建在显示列表的顶部(因此位于所有其他对象的前面),但您可以重新排序显示列表。
8.3. Canvas
对象 ID
画布上对象的对象ID是该对象的构造函数返回的值。所有对象 ID 值都是简单整数,并且对象的对象 ID 在该画布内是唯一的。
8.4. Canvas
标签
标签是一个可以与画布上的对象关联的字符串 。
-
标签可以与画布上任意数量的对象关联,包括零个。
-
一个对象可以有任意数量的与其关联的标签,包括零个。
标签有很多用途。例如,如果您在画布上绘制地图,并且河流上有用于标签的文本对象,则可以将标签附加 'riverLabel'
到所有这些文本对象。这将允许您对带有该标签的所有对象执行操作,例如更改其颜色或删除它们。
8.5 论据Canvas tagOrId
tagOrId
参数tagOrId
指定画布上的一个或多个对象。
-
如果
tagOrId
参数是整数,则将其视为对象 ID,并且仅适用于具有该 ID 的唯一对象。请参见第 8.3 节“Canvas对象 ID”。 -
如果这样的参数是字符串,则它被解释为标签,并选择具有该标签的所有对象(如果有)。请参见第 8.4 节“Canvas标签”。
8.6 Canvas
小部件上的方法
所有Canvas
对象都支持这些方法:
.addtag_above(
newTag
, tagOrId
)
将新标签tagOrId附加到显示列表中指定的标签上方的对象。参数
是您想要附加的标签,作为字符串。newTag
.addtag_all(
newTag
)
将给定标签
附加 到画布上的所有对象。newTag
.addtag_below(
newTag
, tagOrID
)
将新标签tagOrId附加到显示列表中 指定的标签正下方的对象 。参数
是一个标签字符串。newTag
.addtag_closest(
newTag
, x
, y
, halo
=None, start
=None)
将标签添加到最接近屏幕坐标 (x,y) 的对象。如果有两个或多个对象距离相同,则选择 显示列表中较高的一个。
使用
参数来增加点的有效大小。例如,值 5 会将 (x,y) 5 像素内的任何对象视为重叠。halo
如果在参数中传递 对象 ID ,则此方法会标记 显示列表中
下方的最高合格对象 。start
start
.addtag_enclosed(
newTag
, x1
, y1
, x2
, y2
)
为完全出现在左上角为( , ) 、右下角为( , ) 的矩形内的所有对象 添加标签。 newTag
x1
y1
x2
y2
.addtag_overlapping(
newTag
, x1
, y1
, x2
, y2
)
与前一种方法类似,但会影响与给定矩形至少共享一个点的所有对象。
.addtag_withtag(
newTag
, tagOrId
)
将标签
添加 到指定的一个或多个对象 tagOrId。newTag
.bbox(tagOrId=None)
返回一个元组 (x 1 , y 1 , x 2 , y 2 ) 描述包围由 指定的所有对象的矩形 tagOrId。如果省略参数,则返回包围画布上所有对象的矩形。矩形的左上角为(x 1 , y 1 ),右下角为(x 2 , y 2 )。
.canvasx(
screenx
, gridspacing=None)
将窗口 x 坐标转换
为画布坐标。如果 screenx
gridspacing
提供,画布坐标将四舍五入到该值的最接近的倍数。
.canvasy(
screeny
, gridspacing=None)
将窗口 y 坐标转换
为画布坐标。如果 screeny
gridspacing
提供,画布坐标将四舍五入到该值的最接近的倍数。
.coords(
tagOrId
, x0
, y0
, x1
, y1
, ..., xn
, yn
)
如果仅传递 tagOrId参数,则返回该参数指定的最低或唯一对象的坐标元组。坐标的数量取决于对象的类型。在大多数情况下,它将是描述对象边界框的 4 元组 (x 1 , y 1 , x 2 , y 2 )。
您可以通过传入新坐标来移动对象。
.dchars(
tagOrId
, first=0, last=first)
从一个或多个文本项中删除字符。介于first
两者之间的字符将被删除,其中这些值可以是整数索引或表示文本结尾的字符串。例如,对于 canvas和 item , 将删除第二个字符。 last
'end'
C
I
C
.dchars(I
, 1, 1)
.delete(
tagOrId
)
删除通过 选定的一个或多个对象tagOrId。如果没有匹配项,则不会被视为错误
。tagOrId
.dtag(tagOrId, tagToDelete)
从 指定的一个或多个对象中 删除 指定的 标签。
tagOrIdtagToDelete
.find_above(tagOrId)
返回由 指定的对象正上方的对象的 ID 号tagOrId。如果多个对象匹配,您将获得最高的一个。如果将最高对象的对象 ID 传递给它,则返回一个空元组。
.find_all()
返回画布上所有对象的 对象 ID 号 列表(从最低到最高)。
.find_below(
tagOrId
)
返回指定的对象的下一个对象的对象 IDtagOrId。如果多个对象匹配,您将获得最低的一个。如果将最低对象的对象 ID 传递给它,则返回一个空元组。
.find_closest(
x
, y
, halo
=None, start
=None)
返回一个单例元组,其中包含最接近 point 的对象的对象 ID。如果没有符合条件的对象,则返回一个空元组。 (
x
, y
)
使用
参数来增加点的有效大小。例如,halo
halo=5
会将 5 像素以内的任何对象视为重叠。 (
x
, y
)
如果将对象 ID 作为参数传递 ,则此方法将返回显示列表中
下方的最高合格对象 。 start
start
.find_enclosed(
x1
, y1
, x2
, y2
)
返回完全出现在左上角为 、 右下角为 的矩形内的所有对象的对象 ID 列表。 (
x1
, y1
)(
x2
, y2
)
.find_overlapping(
x1
, y1
, x2
, y2
)
与前一方法类似,但返回与给定矩形至少共享一个点的所有对象的对象 ID 列表。
.find_withtag(
tagOrId
)
返回指定的一个或多个对象的 对象 ID 列表tagOrId。
.focus(
tagOrId
=None)
将焦点移动到 指定的对象 tagOrId。如果有多个此类对象,请将焦点移至显示列表中允许插入光标的第一个对象。如果没有符合条件的项目,或者画布没有焦点,则焦点不会移动。
如果省略参数,则返回具有焦点的对象的 ID,如果 ''
没有,则返回。
.gettags(
tagOrId
)
如果 tagOrId是对象 ID,则返回与该对象关联的所有标签的列表。如果参数是 tag,则返回具有该标签的最低对象的所有标签。
.icursor(
tagOrId
, index
)
假设所选项目允许文本插入并具有焦点,则将插入光标设置为
,它可以是整数索引或字符串 index
'end'
。否则没有任何影响。
.index(
tagOrId
, specifier
)
返回指定文本项中给定的 整数索引tagOrId(如果指定多个对象,则为最低索引specifier
)。返回值是对应的整数位置,按照通常的 Python 约定,其中 0 是第一个字符之前的位置。tagOrId
该
参数可以是以下任意一个:specifier
-
tk.INSERT
,返回插入光标的当前位置。 -
tk.END
,返回项目最后一个字符之后的位置。 -
tk.SEL_FIRST
,返回当前文本选择的开始位置。 如果文本项当前不包含文本选择, Tkinter将引发异常。tk.TclError
-
tk.SEL_LAST
,返回当前文本选择结束后的位置,或者tk.TclError
如果该项目当前不包含该选择,则提高。 -
“ ”形式的字符串,返回包含画布坐标的字符。如果这些坐标位于文本项的上方或左侧,则该方法返回 0;如果坐标位于项目的右侧或下方,则该方法返回项目末尾的索引。
@
x
,y
(
x
,y
)
.insert(
tagOrId
, specifier
, text
)
将给定插入
到由 指定的一个或多个对象中tagOrId,位于参数给定的位置string
。specifier
这些
值可能是:specifier
-
任何关键字
tk.INSERT
、tk.END
、tk.SEL_FIRST
或tk.SEL_LAST
。index
这些代码的解释 可以参考上面方法的说明。 -
所需插入的位置,使用字符串中位置的常规 Python 约定。
.itemcget(
tagOrId
, option
)
返回选定对象(如果tagOrId指定多个对象,则返回最低对象)中 给定配置的值。这与Tkinteroption
.cget()
对象的方法类似。
.itemconfigure(
tagOrId
, option
, ...)
如果未
提供参数,则返回一个字典,其键是指定对象的选项 tagOrId(如果指定多个对象,则为最低选项 option
)。tagOrId
要更改指定项的配置选项,请提供一个或多个以下形式的关键字参数。 option
=value
.move(
tagOrId
, xAmount
, yAmount
)
tagOrId通过添加
x 坐标和 xAmount
y 坐标来 移动指定的项目 。yAmount
.postscript(
option
, ...)
生成画布当前内容的封装 PostScript 表示形式。选项包括:
colormode | 用于'color' 彩色输出、'gray' 灰度输出或'mono' 黑白输出。 |
file | 如果提供,请命名将在其中写入 PostScript 的文件。如果未给出此选项,则 PostScript 将作为字符串返回。 |
height | 要打印的画布的 Y 尺寸是多少。默认值是画布的整个可见高度。 |
rotate | 如果为 false,则页面将以纵向呈现;如果属实的话,在风景中。 |
x | 要打印区域的最左侧画布坐标。 |
y | 要打印区域的最顶层画布坐标。 |
width | 要打印的画布 X 尺寸是多少。默认值是画布的可见宽度。 |
.scale(
tagOrId
, xOffset
, yOffset
, xScale
, yScale
)
根据距点 P=(
, xOffset
) 的距离缩放所有对象。比例因子yOffset
和 xScale
基于值 1.0,这意味着没有缩放。所选对象中的每个点 tagOrId都会移动,使其距 P 的 x 距离乘以yScale
,且其 y 距离乘以xScale
。yScale
此方法不会更改文本项的大小,但可能会移动它。
.scan_dragto(
, x
, y
gain
=10.0)
请参阅.scan_mark()
下面的方法。
.scan_mark(
x
, y
)
该方法用于实现画布的快速滚动。目的是用户按住鼠标按钮,然后向上移动鼠标以在该方向水平和垂直扫描(滚动)画布,扫描速度取决于按下鼠标按钮后鼠标移动的距离。
要实现此功能,请将鼠标的按钮按下事件绑定到一个处理程序,该处理程序调用where和是当前鼠标坐标。将事件绑定到处理程序,假设鼠标按钮仍然按下,则调用 where和是当前鼠标坐标。 scan_mark(
x
, y
)x
y
<Motion>
scan_dragto(
x
, y
, gain
)x
y
该
参数控制扫描速率。该参数的默认值为 10.0。使用较大的数字可以加快扫描速度。gain
.select_adjust(
oid
, specifier
)
调整当前文本选择的边界,以包括 对象 ID
的文本项中参数给定的位置。 specifier
oid
当前选择锚点也设置到指定位置。有关选择锚点的讨论,请参阅select_from
下面的 canvas 方法。
对于 的值
,请参阅上面的 canvas specifier
insert
方法。
.select_clear()
删除当前文本选择(如果已设置)。如果当前没有选择,则不执行任何操作。
.select_from(
oid
, specifier
)
此方法将选择锚点设置为参数给定的位置 ,在对象 ID由 给定的
文本项内。 specifier
oid
给定画布上当前选定的文本由三个位置指定:开始位置、结束位置和选择锚点,选择锚点可以位于这两个位置内的任何位置。
select_adjust
要更改当前选定文本的位置,请将此方法与、select_from
和canvas 方法 (qv) 结合使用select_to
。
.select_item()
如果此画布上存在当前文本选择,则返回包含该选择的文本项的对象 ID 。如果当前没有选择,则此方法返回None
。
.select_to(
oid
, specifier
此方法更改当前文本选择,使其包含选择锚点和由给定对象 ID
的文本项内给定的位置。对于 的值 ,请参阅上面的 canvas方法。 specifier
oid
specifier
insert
.tag_bind(
tagOrId
, sequence
=None, function=None, add=None)
将事件绑定到画布上的对象。对于由 选择的一个或多个对象 tagOrId,将处理程序
与事件 相关联function
。如果 sequence
参数是以 开头的字符串 add
'+'
,则新绑定将添加到给定的现有绑定中
,否则新绑定将替换给定的绑定 sequence
。sequence
有关事件绑定的一般信息,请参阅 第 54 节“事件”。
请注意,绑定将应用于在方法调用时具有此标记的项目tag_bind
。如果稍后从这些项目中删除标签,则绑定将保留在这些项目上。如果您指定的标记稍后应用于您调用时没有该标记的项目tag_bind
,则该绑定将不会应用于新标记的项目。
.tag_lower(
tagOrId
, belowThis
)
将显示列表tagOrId中 选择的一个或多个对象移动到由 tag 或 ID 指定的第一个或唯一一个对象的正下方。 belowThis
如果有多个带有 tag 的项目
,则保留它们的相对堆叠顺序。tagOrId
此方法不会影响画布窗口项目。要更改窗口项的堆叠顺序,请 在窗口上 使用lower
or方法。lift
.tag_raise(
tagOrId
, aboveThis
)
将显示列表tagOrId中 选择的一个或多个对象移动到由 tag 或 ID 指定的第一个或唯一一个对象的正上方位置。 aboveThis
如果有多个带有 tag 的项目
,则保留它们的相对堆叠顺序。tagOrId
此方法不会影响画布窗口项目。要更改窗口项的堆叠顺序,请 在窗口上 使用lower
or方法。lift
.tag_unbind(
tagOrId
, sequence
, funcId
=None)
从画布对象或 指定的对象中 删除处理程序
和事件的绑定。请参阅第 54 节“事件”。 funcId
tagOrIdsequence
.type(
tagOrId
)
返回 指定的第一个或唯一对象的类型 tagOrId。返回值将是字符串 'arc'
、 'bitmap'
、 'image'
、 'line'
、 'oval'
、 'polygon'
、 'rectangle'
、 'text'
、 或 之一 'window'
。
.xview(tk.MOVETO,
fraction
)
此方法相对于其图像滚动画布,旨在绑定到command
相关滚动条的选项。画布水平滚动到由 给定的位置
,其中 0.0 将画布移动到最左边的位置,1.0 将画布移动到最右边的位置。offset
.xview(tk.SCROLL,
n
, what
)
此方法向左或向右移动画布:
参数指定移动量,可以是what
tk.UNITS
或tk.PAGES
,并
告诉画布相对于其图像向右移动多少个单位(如果为负,则向左移动)。n
移动的大小tk.UNITS
由画布xscrollincrement
选项的值给出;请参阅第 22 节“小Scrollbar部件”。
对于移动,tk.PAGES,
乘以画布宽度的十分之九。n
.xview_moveto(
fraction
)
此方法以与 相同的方式滚动画布 。 .xview(tk.MOVETO,
fraction
)
.xview_scroll(
n
, what
)
与 相同。 .xview(tk.SCROLL,
n
, what
)
.yview(tk.MOVETO,
fraction
)
垂直滚动相当于 .xview(tk.MOVETO,…)
.
.yview(tk.SCROLL,
n
, what
)
垂直滚动相当于 .xview(tk.SCROLL,…)
.
.yview_moveto(
fraction
)
垂直滚动相当于.xview()
.
.yview_scroll(
n
, what
)
.xview()
、.xview_moveto()
和 的垂直滚动等效项.xview_scroll()
。
8.7. Canvas
弧形物体
画布上的弧形对象 最常见的形式是从椭圆形中取出的楔形切片。这包括作为特殊情况的整个椭圆和圆形。 有关所绘制椭圆的几何形状的更多信息, 请参见第 8.11 节“Canvas椭圆形对象” 。
要在画布上创建圆弧对象
,请使用:C
id = C.create_arc(x0, y0, x1, y1, option, ...)
构造函数返回canvas 上新 arc 对象的对象 ID
。C
点 (
, x0
) 是椭圆拟合矩形的左上角,( y0
, x1
) 是右下角。如果这个矩形是正方形,你会得到一个圆形。y1
各种选项包括:
表 7. Canvas arc
选项
activedash | 当圆弧处于 状态时tk.ACTIVE ,即当鼠标位于圆弧上方时,这些选项适用。例如,该activefill 选项指定圆弧处于活动状态时的内部颜色。有关选项值,请分别参见dash 、fill 、 outline 、outlinestipple 、stipple 和width 。 |
activefill | |
activeoutline | |
activeoutlinestipple | |
activestipple | |
activewidth | |
dash | 轮廓的虚线图案。请参见第 5.13 节“虚线模式”。 |
dashoffset | 轮廓的虚线图案偏移。请参见第 5.13 节“虚线模式”。 |
disableddash | 当圆弧state 为 时,这些选项适用tk.DISABLED 。 |
disabledfill | |
disabledoutline | |
disabledoutlinestipple | |
disabledstipple | |
disabledwidth | |
extent | 切片的宽度(以度为单位)。切片从选项给定的角度开始 ,并逆时针延伸 度数。 |
fill | 默认情况下,圆弧的内部是透明的,并且fill='' 会选择此行为。您还可以将此选项设置为任何颜色 ,圆弧的内部将填充该颜色。 |
offset | 圆弧内部的点画图案偏移。请参见第 5.14 节,“匹配点画图案”。 |
outline | 切片外部边框的颜色。默认为黑色。 |
outlineoffset | 轮廓的点画图案偏移。请参见 第 5.14 节,“匹配点画图案”。 |
outlinestipple | 如果outline 使用该选项,则该选项指定用于点画边框的位图。默认为黑色,可以通过设置指定该默认值outlinestipple='' 。 |
start | 切片的起始角度(以度为单位),从 +x 方向测量。如果省略,您将得到整个椭圆。 |
state | 此选项tk.NORMAL 为默认选项。它可以设置为tk.HIDDEN 使弧不可见或使tk.DISABLED 弧变灰并使其对事件不响应。 |
stipple | 指示如何点画圆弧内部填充的位图。默认为stipple='' (实心)。你可能会想要类似的东西stipple='gray25' 。 除非设置为某种颜色, 否则没有任何效果。 |
style | 默认是绘制整条圆弧;用于style=tk.PIESLICE 这种风格。要仅在切片边缘绘制圆弧,请使用style=tk.ARC 。要绘制圆弧和弦(连接圆弧端点的直线),请使用style=tk.CHORD 。 |
tags | 如果是单个字符串,则用该字符串标记弧。使用字符串元组用多个标签来标记弧。请参见第 8.4 节“Canvas标签”。 |
width | 圆弧外侧边框的宽度。默认值为 1 像素。 |
8.8. 位图对象Canvas
画布上的位图对象显示为两种颜色,即 背景色(对于 0 个数据值)和前景 颜色(对于 1 个值)。
要在画布上创建位图对象,请使用:C
id = C.create_bitmap(x, y, *options ...)
返回图像对象的整数 ID 号 对于那块画布。
和值是 指定位图所在位置的参考点 放置。x
y
选项包括:
表 8.画布
位图选项
activebackground | 这些选项指定位图为 活动,即当鼠标悬停在位图上时。background bitmap foreground |
activebitmap | |
activeforeground | |
anchor | 位图相对于点 (, ) 定位。这 默认值为 anchor=,表示 位图以 (, ) 位置为中心。 请参见第 5.5 节 “锚点” 各种选项值。为 例如,如果指定 , 位图将被定位为该点 (, ) 是 位于 的东北(右上角)角 位图。
tk.CENTER
anchor anchor=tk.NE
|
background | 将要的颜色 显示在位图中值为 0 的位置。 默认值为 , 意思是透明的。background='' |
bitmap | 要显示的位图;请参见第 5.7 节 “位图”。 |
disabledbackground | 这些选项指定背景、位图和 当位图为 时要使用的前景。state tk.DISABLED |
disabledbitmap | |
disabledforeground | |
foreground | 将要的颜色 出现在位图中有 1 个值的位置。 缺省值为 。foreground='black' |
state | 默认情况下,使用 .用于使项目灰显且无响应 事件;用于使 项目不可见。state=tk.NORMAL tk.DISABLED tk.HIDDEN |
tags | 如果是单个字符串,则位图标记为 那个字符串。使用字符串元组标记 具有多个标记的位图。请参见第 8.4 节 “画布标签”。 |
8.9. 图像对象Canvas
要在画布上显示图形图像,请使用:C
id = C.create_image(x, y, option, ...)
此构造函数返回 该画布的图像对象。
图像相对于点 (, ) 定位。选项包括:x
y
表 9.画布图像
选项
activeimage | 鼠标悬停在 项目。有关选项值,请参见下文。image |
anchor | 默认值为 , 这意味着图像以 (, ) 位置为中心。 请参见第 5.5 节 “锚点” 此选项的可能值。例如,如果 指定 ,图像 将定位以便点 (, ) 位于 在底部(南)边缘的中心 图像。anchor=tk.CENTER
anchor=tk.S
|
disabledimage | 项目处于非活动状态时显示的图像。 有关选项值,请参见下文。image |
image | 要显示的图像。有关信息,请参见上文第 5.9 节 “图像” 关于如何创建可加载的图像 在画布上。 |
state | 通常,图像对象是在 状态 中创建的。将此值设置为 使其灰显,并且 对鼠标无响应。如果将其设置为 ,则该项不可见。tk.NORMAL tk.DISABLED tk.HIDDEN |
tags | 如果是单个字符串,则图像将标记为该字符串 字符串。使用字符串元组标记图像 具有多个标签。请参见第 8.4 节 “画布标签”。 |
8.10. 线对象Canvas
通常,一条线可以由任意数量的段组成 首尾相连,每段可以是直的或 弯曲。要在画布上创建画布线条对象,请使用:C
id = C.create_line(x0, y0, x1, y1, ..., xn, yn, option, ...)
这条线穿过一系列点 (, ), (, ), ...(, ).选项 包括:x0
y0
x1
y1
xn
yn
表 10.画布
线条选项
activedash | 这些选项指定在 行处于活动状态,即鼠标悬停时 它。dash fill stipple width |
activefill | |
activestipple | |
activewidth | |
arrow | 默认值为行没有 箭头。用于 在 (, ) 末尾获取一个箭头 行。用于获取 远端的箭头。用于两端的箭头。arrow=tk.FIRST
arrow=tk.LAST arrow=tk.BOTH |
arrowshape | 一个元组 描述由 添加的箭头的形状 选项。默认值为 。( arrow (8,10,3) |
capstyle | 您可以指定线条末端的形状 使用此选项;请参见第 5.12 节 “帽形和联接样式”。默认选项 是。tk.BUTT |
dash | 要生成虚线,请指定此 选择;请参见第 5.13 节 “破折号模式”。 默认外观为实线。 |
dashoffset | 如果指定模式,则 默认值是在 行的开头。该选项允许您指定 破折号模式的开始发生在 给定线路开始后的距离。请参见第 5.13 节 “破折号模式”。dash dashoffset |
disableddash | 当项目处于状态时要使用的、、 和值。dash fill stipple width tk.DISABLED |
disabledfill | |
disabledstipple | |
disabledwidth | |
fill | 要使用的颜色 划清界限。默认值为 。fill='black' |
joinstyle | 对于由多条线组成的行 段,此选项控制外观 线段之间的交汇点。有关更多详细信息, 请参见第 5.12 节 “帽形和联接样式”。这 默认样式为ROUND |
offset | 对于点状线,此选项的用途是 将项目的点画图案与那些 的相邻对象。请参见第 5.14 节 “匹配点状图案”。 |
smooth | 如果为 true,则线绘制为一系列 拟合点集的抛物线样条曲线。违约 为 false,它将行呈现为一组 直线段。 |
splinesteps | 如果该选项为 true,则每个 样条曲线呈现为多条直线 段。选项 指定用于 近似每一段线;默认 是。smooth splinesteps splinesteps=12 |
state | 通常,行项目是在状态中创建的。将此选项设置为 使线条不可见;设置 它使它 对鼠标无响应。tk.NORMAL tk.HIDDEN tk.DISABLED |
stipple | 要绘制点状线,请将此选项设置为 指定点画图案的位图,例如 如。有关可能的值,请参见第 5.7 节 “位图”。stipple='gray25' |
tags | 如果是单个字符串,则用该行标记该 字符串。使用字符串元组标记行 具有多个标签。请参见第 8.4 节 “画布标签”。 |
width | 线条的宽度。默认值为 1 像素。有关可能的值,请参见第 5.1 节 “尺寸”。 |
8.11. 椭圆形对象Canvas
椭圆,在数学上,是椭圆,包括圆 一个特例。椭圆适合矩形 由左上角的坐标 (, ) 定义,以及 位于 右下角。x0
y0
x1
y1
椭圆形将与顶部和左侧线重合 这个盒子,但刚好适合底部和 右侧。
要在画布上创建椭圆,请使用:C
id = C.create_oval(x0, y0, x1, y1, option, ...)
返回对象 画布上新椭圆对象的 ID。C
椭圆形选项:
表 11.画布椭圆
形选项
activedash | 这些选项指定虚线图案,填充 颜色,轮廓颜色,轮廓点图案, 内部点画图案和轮廓宽度 当椭圆处于该状态(即鼠标处于 在椭圆形上。有关选项值,请参见、、、、和。tk.ACTIVE dash fill outline outlinestipple stipple width |
activefill | |
activeoutline | |
activeoutlinestipple | |
activestipple | |
activewidth | |
dash | 要在椭圆周围生成虚线边框,请将 此选项为破折号模式;请参见第 5.13 节 “破折号模式” |
dashoffset | 使用该选项时,该选项用于 更改边框虚线图案的对齐方式 相对于椭圆形。请参见第 5.14 节 “匹配点状图案”。dash dashoffset |
disableddash | 这些选项指定椭圆的外观 当项目的为 .state tk.DISABLED |
disabledfill | |
disabledoutline | |
disabledoutlinestipple | |
disabledstipple | |
disabledwidth | |
fill | 椭圆内部的默认外观为 透明,值 将选择此行为。您还可以设置 此选项适用于任何颜色和内部 椭圆将填充该颜色;请参见第 5.3 节 “颜色”。fill='' |
offset | 内部的尖顶图案偏移。请参见第 5.14 节 “匹配点状图案”。 |
outline | 外部边框的颜色 椭圆。默认值为 。outline='black' |
outlineoffset | 边框的尖顶图案偏移量。请参见第 5.14 节 “匹配点状图案”。 |
stipple | 指示内部如何 椭圆将被点缀。默认值为 ,表示纯色。 典型值为 。除非 已设置为一些 颜色。请参见第 5.7 节 “位图”。stipple='' stipple='gray25' fill |
outlinestipple | 用于边框的尖锐图案。为 选项值,请参见下文。stipple |
state | 默认情况下,椭圆形项目是在状态 中创建的。将此选项设置为 使椭圆无响应 到鼠标操作。将其设置为 以使项目不可见。tk.NORMAL tk.DISABLED tk.HIDDEN |
tags | 如果是单个字符串,则椭圆形标记为该字符串 字符串。使用字符串元组标记椭圆形 具有多个标签。请参见第 8.4 节 “画布标签”。 |
width | 外部边框的宽度 椭圆。默认值为 1 像素;有关可能的值,请参见第 5.1 节 “尺寸”。如果 将其设置为零,边框不会 出现。如果将其设置为零并进行填充 透明,可以做成整个椭圆形 消失。 |
8.12. 多边形对象Canvas
如图所示,多边形由两部分组成:轮廓和 它的内部。其几何形状指定为一系列 顶点 [(x0, y0), (x1, y1), ...(xn, yn)],但 实际周长包括来自 (xn、yn) 的另外一段 返回到 (x0, y0)。在此示例中,有五个 顶点:
要在画布上创建新的多边形对象:C
id = C.create_polygon(x0, y0, x1, y1, ..., option, ...)
构造函数返回该对象的对象 ID。 选项:
表 12.画布多边形
选项
activedash | 这些选项指定 多边形处于状态时,即鼠标悬停在其上时。为 选项值,请参见、、、、、、 和。tk.ACTIVE dash fill outline outlinestipple stipple width |
activefill | |
activeoutline | |
activeoutlinestipple | |
activestipple | |
activewidth | |
dash | 使用此选项可在周围生成虚线边框 多边形。请参见第 5.13 节 “破折号模式”。 |
dashoffset | 使用此选项在某些位置开始破折号模式 在其周期中点,而不是开始。请参见第 5.13 节 “破折号模式”。 |
disableddash | 这些选项指定 多边形时为 .state tk.DISABLED |
disabledfill | |
disabledoutline | |
disabledoutlinestipple | |
disabledstipple | |
disabledwidth | |
fill | 您可以通过设置此选项为内部着色 到一种颜色。的默认外观 多边形的内部是透明的,您可以 设置为获取此行为。 请参见第 5.3 节 “颜色”。fill='' |
joinstyle | 此选项控制 相邻两侧之间的交叉点 多边形。请参见第 5.12 节 “帽形和联接样式”。 |
offset | 内部点状图案的偏移 多边形。请参见第 5.14 节 “匹配点状图案”。 |
outline | 轮廓的颜色;默认为 ,使轮廓 透明。outline='' |
outlineoffset | 边框的倾斜偏移量。请参见第 5.14 节 “匹配点状图案”。 |
outlinestipple | 使用此选项可在周围添加点状边框 多边形。选项值必须是位图; 请参见第 5.7 节 “位图”。 |
smooth | 默认轮廓使用直线 连接顶点;用于获取该行为。如果使用 ,则会得到一个连续样条 曲线。此外,如果您设置 ,您可以制作任何段 通过复制每个坐标来直线 该段的结尾。smooth=0 smooth=1 smooth=1 |
splinesteps | 如果该选项为 true,则每个 样条曲线呈现为多条直线 段。选项 指定用于 近似每一段线;默认 是。smooth splinesteps splinesteps=12 |
state | 默认情况下,将在该州中创建面。将此选项设置为 使面不可见,或 将其设置为 使其 对鼠标无响应。tk.NORMAL tk.HIDDEN tk.DISABLED |
stipple | 指示内部如何 多边形将被点缀。默认值为 ,表示纯色。 典型值为 。除非 已设置为一些 颜色。请参见第 5.7 节 “位图”。stipple='' stipple='gray25' fill |
tags | 如果是单个字符串,则多边形标记为 那个字符串。使用字符串元组标记 具有多个标签的多边形。请参见第 8.4 节 “画布标签”。 |
width | 轮廓的宽度;默认值为 1。请参见第 5.1 节 “尺寸”。 |
8.13. 矩形对象Canvas
每个矩形指定为两个点:(, ) 为左上角 角,和 (, ) 是 像素的位置就在右下角的外侧。x0
y0
x1
y1
例如,左上角指定的矩形 (100,100)和右下角(102,102)是一个正方形 两个像素乘两个像素,包括像素 (101,101) 但不包括 (102,102)。
矩形分为两部分绘制:
-
轮廓位于其顶部的矩形内,并且 左侧,但在 其底部和右侧的矩形。默认 外观是一个像素宽的黑色边框。
例如,考虑一个左上角的矩形 (10,10) 和右下角 (11,11)。如果你 请求无边框 () 和 绿色填充 (, 您 将在 (10,10) 处获得一个绿色像素。然而 如果您请求带有黑色的相同选项 边框 (),你会得到 四个黑色像素在 (10,10), (10,11), (11,10), 和 (11,11)。
width=0
fill='green')
width=1
-
填充是轮廓内的区域。其默认值 外观是透明的。
要在画布上创建矩形对象:C
id = C.create_rectangle(x0, y0, x1, y1, option, ...)
此构造函数返回矩形的对象 ID 那幅画布。选项包括:
表 13.画布矩形
选项
activedash | 这些选项指定 矩形为 时,即鼠标打开时 矩形的顶部。有关选项值,请参阅 自 及以下。state tk.ACTIVE dash fill outline outlinestipple stipple width |
activefill | |
activeoutline | |
activeoutlinestipple | |
activestipple | |
activewidth | |
dash | 要在矩形周围生成虚线边框, 使用此选项可指定短划线模式。请参见第 5.13 节 “破折号模式”。 |
dashoffset | 使用此选项开始边框的破折号 周期中不同点的模式;请参见第 5.13 节 “破折号模式”。 |
disableddash | 这些选项指定 矩形为 .state tk.DISABLED |
disabledfill | |
disabledoutline | |
disabledoutlinestipple | |
disabledstipple | |
disabledwidth | |
fill | 默认情况下,矩形的内部为空, 您可以使用 获得此行为。您还可以将选项设置为 一种颜色;请参见第 5.3 节 “颜色”。fill='' |
offset | 使用此选项可更改 室内点画图案。请参见第 5.14 节 “匹配点状图案”。 |
outline | 边框的颜色。默认值为 。outline='black' |
outlineoffset | 使用此选项可调整 轮廓中的点状图案;请参见第 5.14 节 “匹配点状图案”。 |
outlinestipple | 使用此选项可生成点状轮廓。 模式由位图指定;请参见第 5.7 节 “位图”。 |
state | 默认情况下,矩形是在状态中创建的。状态是当鼠标悬停在 矩形。将此选项设置为 使矩形灰显,并且 使其对鼠标事件无响应。tk.NORMAL tk.ACTIVE tk.DISABLED |
stipple | 指示内部如何 矩形将被点缀。默认值为 ,表示纯色。 典型值为 。除非 已设置为一些 颜色。请参见第 5.7 节 “位图”。stipple='' stipple='gray25' fill |
tags | 如果是单个字符串,则矩形标记为 那个字符串。使用字符串元组标记 具有多个标签的矩形。请参见第 8.4 节 “画布标签”。 |
width | 边框的宽度。默认值为 1 像素。用于制作边框 无形。请参见第 5.1 节 “尺寸”。width=0 |
8.14. 文本对象Canvas
您可以通过创建 文本对象:C
id = C.create_text(x, y, option, ...)
这将返回对象 画布上文本对象的 ID。选项包括:C
表 14.画布文本
选项
activefill | 文本 活动,即当鼠标悬停在其上时。为 选项值,请参见下文。fill |
activestipple | 文本时要使用的点状图案 积极。有关选项值,请参见下文。stipple |
anchor | 默认值为 , 这意味着文本垂直居中并且 水平围绕位置 (, )。有关可能的值,请参见第 5.5 节 “锚点”。 例如,如果指定 ,则将定位文本 所以它的左下角在点 (, )。anchor=tk.CENTER
anchor=tk.SW
|
disabledfill | 当文本对象为 . 有关选项值,请参见下文。state tk.DISABLED fill |
disabledstipple | 文本时要使用的点状图案 禁用。有关选项值,请参见下文。stipple |
fill | 默认文本颜色为黑色,但您可以 通过将选项设置为该颜色,以任何颜色呈现它。请参见第 5.3 节 “颜色”。fill |
font | 如果您不喜欢默认字体,请设置此项 选项,以选择任何字体值。请参见第 5.4 节 “键入字体”。 |
justify | 对于多行文本显示,此选项 控制行的对齐方式:(默认值)、或 。tk.LEFT tk.CENTER tk.RIGHT |
offset | 用于渲染 发短信。有关更多信息,请参见第 5.14 节 “匹配点状图案”。 |
state | 默认情况下,文本项的状态为 。将此选项设置为无响应 鼠标事件,或将其设置为 使其不可见。tk.NORMAL tk.DISABLED tk.HIDDEN |
stipple | 指示文本如何显示的位图 点缀。默认值为 , 这意味着固体。典型值为 。请参见第 5.7 节 “位图”。stipple='' stipple='gray25' |
tags | 如果是单个字符串,则文本对象标记为 那个字符串。使用字符串元组标记 具有多个标签的对象。请参见第 8.4 节 “画布标签”。 |
text | 要在对象中显示的文本,作为 字符串。使用换行符 () 强制换行。'\n' |
width | 如果未指定选项,文本将设置在矩形内 只要最长的线。但是,您可以 同时将选项设置为 尺寸,并且文本的每一行都将是 如有必要,分成较短的行,甚至 在单词中断开,以适应指定的 宽度。请参见第 5.1 节 “尺寸”。width width |
您可以更改文本项目中显示的文本。
许多画布方法允许您操作文本 项目。请参见第 8.6 节 “画布上的方法”,特别是 、 、 和 。
8.15. 窗口对象Canvas
您可以使用画布窗口对象将任何 Tkinter 小部件放置在画布上。窗口是 一个可以容纳一个 Tkinter 小部件的矩形区域。这 小组件必须是与 相同的顶级窗口的子窗口 画布,或位于 相同的顶级窗口。
如果要将复杂的多控件对象放在 canvas,您可以使用此方法在画布上放置一个小部件,然后放置其他 该框架内的小部件。Frame
要在画布上创建新的画布窗口对象:C
id = C.create_window(x, y, option, ...)
这将返回对象 窗口对象的 ID。选项包括:
表 15.画布窗口
选项
anchor | 默认值为 , 表示窗口以 (, ) 位置为中心。 请参见第 5.5 节 “锚点”以了解可能的 值。例如,如果指定 ,则将定位窗口 所以点 (, ) 在 其右(东)边缘的中点。anchor=tk.CENTER
anchor=tk.E
|
height | 为窗口保留的区域的高度。 如果省略,窗口的大小将适合 所包含微件的高度。有关可能的值,请参见第 5.1 节 “尺寸”。 |
state | 默认情况下,窗口项处于该状态。将此选项设置为 使窗口无响应 到鼠标输入,或到 使其隐形。tk.NORMAL tk.DISABLED tk.HIDDEN |
tags | 如果是单个字符串,则窗口标记为 那个字符串。使用字符串元组标记 具有多个标签的窗口。请参见第 8.4 节 “画布标签”。 |
width | 为窗口保留的区域的宽度。 如果省略,窗口的大小将适合 所包含微件的宽度。 |
window | 使用要放置在画布上的小部件的位置。 如果最初省略了它,您可以稍后调用以将小部件放置在画布上,其中是窗口的对象 ID。window=
|