【Tkinter系列03/15】界面布局和部件面面观

说明

        一般来说,界面开发中,如果不是大型的软件,就不必用QT之类的实现,用Tkinter已经足够,然而即便是Tkinter规模不大,也需要一个系统专业的学习过程,本篇将是对Tkinter系列介绍的一篇博文。

7. The Button widget

七.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选择当鼠标 悬停在按钮上时要显示的光标。
defaulttk.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小部件

        画布是用于绘制图片或其他复杂布局的矩形区域。您可以在其上放置图形、文本、小部件或框架。有关在画布上创建对象的方法,请参阅以下部分:

创建一个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 节“光标”
heightY 维度画布的大小。请参见第 5.1 节“尺寸”
highlightbackground当小部件没有焦点时焦点突出显示的颜色。请参见第 53 节“焦点:路由键盘输入”
highlightcolor焦点突出显示的 颜色 。
highlightthickness焦点高光 的厚度 。默认值为 1。
relief画布的浮雕风格。默认为tk.FLAT. 请参见第 5.6 节“浮雕样式”
scrollregion一个元组,定义画布可以滚动的区域有多大,其中 左侧、 顶部、 右侧和 底部在哪里。 (wnes)wnes
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参数是整数,则将其视为对象 ID,并且仅适用于具有该 ID 的唯一对象。请参见第 8.3 节“Canvas对象 ID”

  • 如果这样的参数是字符串,则它被解释为标签,并选择具有该标签的所有对象(如果有)。请参见第 8.4 节“Canvas标签”

8.6 Canvas小部件上的方法

所有Canvas对象都支持这些方法:

.addtag_above(newTagtagOrId)

将新标签tagOrId附加到显示列表中指定的标签上方的对象。参数newTag 是您想要附加的标签,作为字符串。

.addtag_all(newTag)

将给定标签 newTag附加 到画布上的所有对象。

.addtag_below(newTagtagOrID)

将新标签tagOrId附加到显示列表中 指定的标签正下方的对象 。参数 newTag 是一个标签字符串。

.addtag_closest(newTagxyhalo=None, start=None)

标签添加到最接近屏幕坐标 (x,y) 的对象。如果有两个或多个对象距离相同,则选择 显示列表中较高的一个。

使用 halo 参数来增加点的有效大小。例如,值 5 会将 (x,y) 5 像素内的任何对象视为重叠。

如果在参数中传递 对象 ID ,则此方法会标记 显示列表中 start 下方的最高合格对象 。start

.addtag_enclosed(newTagx1y1x2y2)

为完全出现在左上角为( , ) 、右下角为( , ) 的矩形内的所有对象 添加标签。 newTagx1y1x2y2

.addtag_overlapping(newTagx1y1x2y2)

与前一种方法类似,但会影响与给定矩形至少共享一个点的所有对象。

.addtag_withtag(newTagtagOrId)

标签 newTag添加 到指定的一个或多个对象 tagOrId

.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(tagOrIdx0y0x1y1, ..., xnyn)

如果仅传递 tagOrId参数,则返回该参数指定的最低或唯一对象的坐标元组。坐标的数量取决于对象的类型。在大多数情况下,它将是描述对象边界框的 4 元组 (x 1 , y 1 , x 2 , y 2 )。

您可以通过传入新坐标来移动对象。

.dchars(tagOrId, first=0, last=first)

从一个或多个文本项中删除字符。介于first两者之间的字符将被删除,其中这些值可以是整数索引或表示文本结尾的字符串。例如,对于 canvas和 item , 将删除第二个字符。 last 'end'CIC.dchars(I, 1, 1)

.delete(tagOrId)

删除通过 选定的一个或多个对象tagOrId。如果没有匹配项,则不会被视为错误tagOrId

.dtag(tagOrId, tagToDelete)

从 指定的一个或多个对象中 删除 指定的 标签。 tagToDeletetagOrId

.find_above(tagOrId)

返回由 指定的对象正上方的对象的 ID 号tagOrId。如果多个对象匹配,您将获得最高的一个。如果将最高对象的对象 ID 传递给它,则返回一个空元组。

.find_all()

返回画布上所有对象的 对象 ID 号 列表(从最低到最高)。

.find_below(tagOrId)

返回指定的对象的下一个对象的对象 IDtagOrId。如果多个对象匹配,您将获得最低的一个。如果将最低对象的对象 ID 传递给它,则返回一个空元组。

.find_closest(xyhalo=None, start=None)

返回一个单例元组,其中包含最接近 point 的对象的对象 ID。如果没有符合条件的对象,则返回一个空元组。 (xy)

使用halo参数来增加点的有效大小。例如,halo=5会将 5 像素以内的任何对象视为重叠。 (xy)

如果将对象 ID 作为参数传递 ,则此方法将返回显示列表start 下方的最高合格对象 。 start

.find_enclosed(x1y1x2y2)

返回完全出现在左上角为 、 右下角为 的矩形内的所有对象的对象 ID 列表。 (x1y1)(x2y2)

.find_overlapping(x1y1x2y2)

与前一方法类似,但返回与给定矩形至少共享一个点的所有对象的对象 ID 列表。

.find_withtag(tagOrId)

返回指定的一个或多个对象的 对象 ID 列表tagOrId

.focus(tagOrId=None)

将焦点移动到 指定的对象 tagOrId。如果有多个此类对象,请将焦点移至显示列表中允许插入光标的第一个对象。如果没有符合条件的项目,或者画布没有焦点,则焦点不会移动。

如果省略参数,则返回具有焦点的对象的 ID,如果 ''没有,则返回。

.gettags(tagOrId)

如果 tagOrId是对象 ID,则返回与该对象关联的所有标签的列表。如果参数是 tag,则返回具有该标签的最低对象的所有标签。

.icursor(tagOrIdindex)

假设所选项目允许文本插入并具有焦点,则将插入光标设置为 index,它可以是整数索引或字符串 'end'。否则没有任何影响。

.index(tagOrIdspecifier)

specifier返回指定文本项中给定的 整数索引tagOrId(如果指定多个对象,则为最低索引tagOrId )。返回值是对应的整数位置,按照通常的 Python 约定,其中 0 是第一个字符之前的位置。

specifier 参数可以是以下任意一个:

  • tk.INSERT,返回插入光标的当前位置。

  • tk.END,返回项目最后一个字符之后的位置。

  • tk.SEL_FIRST,返回当前文本选择的开始位置。 如果文本项当前不包含文本选择, Tkinter将引发异常。tk.TclError

  • tk.SEL_LAST,返回当前文本选择结束后的位置,或者tk.TclError如果该项目当前不包含该选择,则提高。

  • “ ”形式的字符串,返回包含画布坐标的字符。如果这些坐标位于文本项的上方或左侧,则该方法返回 0;如果坐标位于项目的右侧或下方,则该方法返回项目末尾的索引。 @x,y(xy)

.insert(tagOrIdspecifiertext)

将给定插入string到由 指定的一个或多个对象中tagOrId,位于参数给定的位置specifier

这些specifier值可能是:

  • 任何关键字tk.INSERT、 tk.ENDtk.SEL_FIRSTtk.SEL_LASTindex这些代码的解释 可以参考上面方法的说明。

  • 所需插入的位置,使用字符串中位置的常规 Python 约定。

.itemcget(tagOrIdoption)

option返回选定对象(如果tagOrId指定多个对象,则返回最低对象)中 给定配置的值。这与Tkinter.cget()对象的方法类似。

.itemconfigure(tagOrIdoption, ...)

如果未 option 提供参数,则返回一个字典,其键是指定对象的选项 tagOrId(如果指定多个对象,则为最低选项 tagOrId )。

要更改指定项的配置选项,请提供一个或多个以下形式的关键字参数。 option=value

.move(tagOrIdxAmountyAmount)

tagOrId通过添加 xAmount x 坐标和 yAmount y 坐标来 移动指定的项目 。

.postscript(option, ...)

生成画布当前内容的封装 PostScript 表示形式。选项包括:

colormode用于'color'彩色输出、'gray'灰度输出或'mono'黑白输出。
file如果提供,请命名将在其中写入 PostScript 的文件。如果未给出此选项,则 PostScript 将作为字符串返回。
height要打印的画布的 Y 尺寸是多少。默认值是画布的整个可见高度。
rotate如果为 false,则页面将以纵向呈现;如果属实的话,在风景中。
x要打印区域的最左侧画布坐标。
y要打印区域的最顶层画布坐标。
width要打印的画布 X 尺寸是多少。默认值是画布的可见宽度。

.scale(tagOrIdxOffsetyOffsetxScaleyScale)

根据距点 P=( xOffsetyOffset) 的距离缩放所有对象。比例因子xScale和 yScale 基于值 1.0,这意味着没有缩放。所选对象中的每个点 tagOrId都会移动,使其距 P 的 x 距离乘以xScale,且其 y 距离乘以yScale

此方法不会更改文本项的大小,但可能会移动它。

.scan_dragto(xygain=10.0)

请参阅.scan_mark()下面的方法。

.scan_mark(xy)

该方法用于实现画布的快速滚动。目的是用户按住鼠标按钮,然后向上移动鼠标以在该方向水平和垂直扫描(滚动)画布,扫描速度取决于按下鼠标按钮后鼠标移动的距离。

要实现此功能,请将鼠标的按钮按下事件绑定到一个处理程序,该处理程序调用where和是当前鼠标坐标。将事件绑定到处理程序,假设鼠标按钮仍然按下,则调用 where和是当前鼠标坐标。 scan_mark(xy)xy<Motion>scan_dragto(xygain)xy

gain参数控制扫描速率。该参数的默认值为 10.0。使用较大的数字可以加快扫描速度。

.select_adjust(oidspecifier)

调整当前文本选择的边界,以包括 对象 IDspecifier的文本项中参数给定的位置。 oid

当前选择锚点也设置到指定位置。有关选择锚点的讨论,请参阅select_from下面的 canvas 方法。

对于 的值specifier,请参阅上面的 canvas insert方法。

.select_clear()

删除当前文本选择(如果已设置)。如果当前没有选择,则不执行任何操作。

.select_from(oidspecifier)

此方法将选择锚点设置为参数给定的位置 ,在对象 ID由 给定的 specifier文本项内。 oid

给定画布上当前选定的文本由三个位置指定:开始位置、结束位置和选择锚点,选择锚点可以位于这两个位置内的任何位置。

select_adjust要更改当前选定文本的位置,请将此方法与、select_from和canvas 方法 (qv) 结合使用select_to

.select_item()

如果此画布上存在当前文本选择,则返回包含该选择的文本项的对象 ID 。如果当前没有选择,则此方法返回None

.select_to(oidspecifier

此方法更改当前文本选择,使其包含选择锚点和由给定对象 IDspecifier的文本项内给定的位置。对于 的值 ,请参阅上面的 canvas方法。 oidspecifierinsert

.tag_bind(tagOrIdsequence=None, function=None, add=None)

将事件绑定到画布上的对象。对于由 选择的一个或多个对象 tagOrId,将处理程序 function 与事件 相关联sequence。如果 add 参数是以 开头的字符串 '+',则新绑定将添加到给定的现有绑定中 sequence,否则新绑定将替换给定的绑定 sequence

有关事件绑定的一般信息,请参阅 第 54 节“事件”

请注意,绑定将应用于在方法调用时具有此标记的项目tag_bind。如果稍后从这些项目中删除标签,则绑定将保留在这些项目上。如果您指定的标记稍后应用于您调用时没有该标记的项目tag_bind,则该绑定将不会应用于新标记的项目。

.tag_lower(tagOrIdbelowThis)

将显示列表tagOrId中 选择的一个或多个对象移动到由 tag 或 ID 指定的第一个或唯一一个对象的正下方。 belowThis

如果有多个带有 tag 的项目tagOrId,则保留它们的相对堆叠顺序。

此方法不会影响画布窗口项目。要更改窗口项的堆叠顺序,请 在窗口上 使用loweror方法。lift

.tag_raise(tagOrIdaboveThis)

将显示列表tagOrId中 选择的一个或多个对象移动到由 tag 或 ID 指定的第一个或唯一一个对象的正上方位置。 aboveThis

如果有多个带有 tag 的项目tagOrId,则保留它们的相对堆叠顺序。

此方法不会影响画布窗口项目。要更改窗口项的堆叠顺序,请 在窗口上 使用loweror方法。lift

.tag_unbind(tagOrIdsequencefuncId=None)

从画布对象或 指定的对象中 删除处理程序funcId和事件的绑定。请参阅第 54 节“事件”。 sequencetagOrId

.type(tagOrId)

返回 指定的第一个或唯一对象的类型 tagOrId。返回值将是字符串 'arc'、 'bitmap'、 'image'、 'line'、 'oval'、 'polygon'、 'rectangle'、 'text'、 或 之一 'window'

.xview(tk.MOVETO, fraction)

此方法相对于其图像滚动画布,旨在绑定到command相关滚动条的选项。画布水平滚动到由 给定的位置offset,其中 0.0 将画布移动到最左边的位置,1.0 将画布移动到最右边的位置。

.xview(tk.SCROLL, nwhat)

此方法向左或向右移动画布: what 参数指定移动量,可以是tk.UNITStk.PAGES,并n 告诉画布相对于其图像向右移动多少个单位(如果为负,则向左移动)。

移动的大小tk.UNITS由画布xscrollincrement选项的值给出;请参阅第 22 节“小Scrollbar部件”

对于移动,tk.PAGES, n乘以画布宽度的十分之九。

.xview_moveto(fraction)

此方法以与 相同的方式滚动画布 。 .xview(tk.MOVETO, fraction)

.xview_scroll(nwhat)

与 相同。 .xview(tk.SCROLL, nwhat)

.yview(tk.MOVETO, fraction)

垂直滚动相当于 .xview(tk.MOVETO,…).

.yview(tk.SCROLL, nwhat)

垂直滚动相当于 .xview(tk.SCROLL,…).

.yview_moveto(fraction)

垂直滚动相当于.xview().

.yview_scroll(nwhat)

.xview().xview_moveto()和 的垂直滚动等效项.xview_scroll()

8.7. Canvas弧形物体

        画布上的弧形对象 最常见的形式是从椭圆形中取出的楔形切片。这包括作为特殊情况的整个椭圆和圆形。 有关所绘制椭圆的几何形状的更多信息, 请参见第 8.11 节“Canvas椭圆形对象” 。

        要在画布上创建圆弧对象C,请使用:

  id = C.create_arc(x0, y0, x1, y1, option, ...)

        构造函数返回canvas 上新 arc 对象的对象 IDC

        点 ( x0y0) 是椭圆拟合矩形的左上角,( x1y1) 是右下角。如果这个矩形是正方形,你会得到一个圆形。

        各种选项包括:

表 7. Canvas arc选项

activedash当圆弧处于 状态时tk.ACTIVE,即当鼠标位于圆弧上方时,这些选项适用。例如,该activefill选项指定圆弧处于活动状态时的内部颜色。有关选项值,请分别参见dashfill、 outlineoutlinestipplestipplewidth
activefill
activeoutline
activeoutlinestipple
activestipple
activewidth
dash轮廓的虚线图案。请参见第 5.13 节“虚线模式”
dashoffset轮廓的虚线图案偏移。请参见第 5.13 节“虚线模式”
disableddash当圆弧state为 时,这些选项适用tk.DISABLED
disabledfill
disabledoutline
disabledoutlinestipple
disabledstipple
disabledwidth
extent切片的宽度(以度为单位)。切片从选项给定的角度开始start,并逆时针延伸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'fill除非设置为某种颜色, 否则没有任何效果。
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 号 对于那块画布。

        和值是 指定位图所在位置的参考点 放置。xy

        选项包括:

表 8.画布位图选项

activebackground这些选项指定位图为 活动,即当鼠标悬停在位图上时。backgroundbitmapforeground
activebitmap
activeforeground
anchor位图相对于点 (, ) 定位。这 默认值为 anchor=,表示 位图以 (, ) 位置为中心。 请参见第 5.5 节 “锚点” 各种选项值。为 例如,如果指定 , 位图将被定位为该点 (, ) 是 位于 的东北(右上角)角 位图。xytk.CENTERxyanchoranchor=tk.NExy
background要的颜色 显示在位图中值为 0 的位置。 默认值为 , 意思是透明的。background=''
bitmap要显示的位图;请参见第 5.7 节 “位图”。
disabledbackground这些选项指定背景、位图和 当位图为 时要使用的前景。statetk.DISABLED
disabledbitmap
disabledforeground
foreground要的颜色 出现在位图中有 1 个值的位置。 缺省值为 。foreground='black'
state默认情况下,使用 .用于使项目灰显且无响应 事件;用于使 项目不可见。state=tk.NORMALtk.DISABLEDtk.HIDDEN
tags如果是单个字符串,则位图标记为 那个字符串。使用字符串元组标记 具有多个标记的位图。请参见第 8.4 节 “画布标签”。

8.9. 图像对象Canvas

要在画布上显示图形图像,请使用:C

   id = C.create_image(x, y, option, ...)

此构造函数返回 该画布的图像对象。

图像相对于点 (, ) 定位。选项包括:xy

表 9.画布图像选项

activeimage鼠标悬停在 项目。有关选项值,请参见下文。image
anchor默认值为 , 这意味着图像以 (, ) 位置为中心。 请参见第 5.5 节 “锚点” 此选项的可能值。例如,如果 指定 ,图像 将定位以便点 (, ) 位于 在底部(南)边缘的中心 图像。anchor=tk.CENTERxyanchor=tk.Sxy
disabledimage项目处于非活动状态时显示的图像。 有关选项值,请参见下文。image
image要显示的图像。有关信息,请参见上文第 5.9 节 “图像” 关于如何创建可加载的图像 在画布上。
state通常,图像对象是在 状态 中创建的。将此值设置为 使其灰显,并且 对鼠标无响应。如果将其设置为 ,则该项不可见。tk.NORMALtk.DISABLEDtk.HIDDEN
tags如果是单个字符串,则图像将标记为该字符串 字符串。使用字符串元组标记图像 具有多个标签。请参见第 8.4 节 “画布标签”。

8.10. 线对象Canvas

        通常,一条线可以由任意数量的段组成 首尾相连,每段可以是直的或 弯曲。要在画布上创建画布线条对象,请使用:C

    id = C.create_line(x0, y0, x1, y1, ..., xn, yn, option, ...)

        这条线穿过一系列点 (, ), (, ), ...(, ).选项 包括:x0y0x1y1xnyn

        表 10.画布线条选项

activedash这些选项指定在 行处于活动状态,即鼠标悬停时 它。dashfillstipplewidth
activefill
activestipple
activewidth
arrow默认值为行没有 箭头。用于 在 (, ) 末尾获取一个箭头 行。用于获取 远端的箭头。用于两端的箭头。arrow=tk.FIRSTx0y0arrow=tk.LASTarrow=tk.BOTH
arrowshape一个元组 描述由 添加的箭头的形状 选项。默认值为 。(d1d2d3)arrow(8,10,3)

capstyle您可以指定线条末端的形状 使用此选项;请参见第 5.12 节 “帽形和联接样式”。默认选项 是。tk.BUTT
dash要生成虚线,请指定此 选择;请参见第 5.13 节 “破折号模式”。 默认外观为实线。
dashoffset如果指定模式,则 默认值是在 行的开头。该选项允许您指定 破折号模式的开始发生在 给定线路开始后的距离。请参见第 5.13 节 “破折号模式”。dashdashoffset
disableddash当项目处于状态时要使用的、、 和值。dashfillstipplewidthtk.DISABLED
disabledfill
disabledstipple
disabledwidth
fill要使用的颜色 划清界限。默认值为 。fill='black'
joinstyle对于由多条线组成的行 段,此选项控制外观 线段之间的交汇点。有关更多详细信息, 请参见第 5.12 节 “帽形和联接样式”。这 默认样式为ROUND
offset对于点状线,此选项的用途是 将项目的点画图案与那些 的相邻对象。请参见第 5.14 节 “匹配点状图案”。
smooth如果为 true,则线绘制为一系列 拟合点集的抛物线样条曲线。违约 为 false,它将行呈现为一组 直线段。
splinesteps如果该选项为 true,则每个 样条曲线呈现为多条直线 段。选项 指定用于 近似每一段线;默认 是。smoothsplinestepssplinesteps=12
state通常,行项目是在状态中创建的。将此选项设置为 使线条不可见;设置 它使它 对鼠标无响应。tk.NORMALtk.HIDDENtk.DISABLED
stipple要绘制点状线,请将此选项设置为 指定点画图案的位图,例如 如。有关可能的值,请参见第 5.7 节 “位图”。stipple='gray25'
tags如果是单个字符串,则用该行标记该 字符串。使用字符串元组标记行 具有多个标签。请参见第 8.4 节 “画布标签”。
width线条的宽度。默认值为 1 像素。有关可能的值,请参见第 5.1 节 “尺寸”。

8.11. 椭圆形对象Canvas

椭圆,在数学上,是椭圆,包括圆 一个特例。椭圆适合矩形 由左上角的坐标 (, ) 定义,以及 位于 右下角。x0y0x1y1

椭圆形将与顶部和左侧线重合 这个盒子,但刚好适合底部和 右侧。

要在画布上创建椭圆,请使用:C

    id = C.create_oval(x0, y0, x1, y1, option, ...)

返回对象 画布上新椭圆对象的 ID。C

椭圆形选项:

表 11.画布椭圆形选项

activedash这些选项指定虚线图案,填充 颜色,轮廓颜色,轮廓点图案, 内部点画图案和轮廓宽度 当椭圆处于该状态(即鼠标处于 在椭圆形上。有关选项值,请参见、、、、和。tk.ACTIVEdashfilloutlineoutlinestipplestipplewidth
activefill
activeoutline
activeoutlinestipple
activestipple
activewidth
dash要在椭圆周围生成虚线边框,请将 此选项为破折号模式;请参见第 5.13 节 “破折号模式”
dashoffset使用该选项时,该选项用于 更改边框虚线图案的对齐方式 相对于椭圆形。请参见第 5.14 节 “匹配点状图案”。dashdashoffset
disableddash这些选项指定椭圆的外观 当项目的为 .statetk.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.NORMALtk.DISABLEDtk.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.ACTIVEdashfilloutlineoutlinestipplestipplewidth
activefill
activeoutline
activeoutlinestipple
activestipple
activewidth
dash使用此选项可在周围生成虚线边框 多边形。请参见第 5.13 节 “破折号模式”。
dashoffset使用此选项在某些位置开始破折号模式 在其周期中点,而不是开始。请参见第 5.13 节 “破折号模式”。
disableddash这些选项指定 多边形时为 .statetk.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=0smooth=1smooth=1
splinesteps如果该选项为 true,则每个 样条曲线呈现为多条直线 段。选项 指定用于 近似每一段线;默认 是。smoothsplinestepssplinesteps=12
state默认情况下,将在该州中创建面。将此选项设置为 使面不可见,或 将其设置为 使其 对鼠标无响应。tk.NORMALtk.HIDDENtk.DISABLED
stipple指示内部如何 多边形将被点缀。默认值为 ,表示纯色。 典型值为 。除非 已设置为一些 颜色。请参见第 5.7 节 “位图”。stipple=''stipple='gray25'fill
tags如果是单个字符串,则多边形标记为 那个字符串。使用字符串元组标记 具有多个标签的多边形。请参见第 8.4 节 “画布标签”。
width轮廓的宽度;默认值为 1。请参见第 5.1 节 “尺寸”。

8.13. 矩形对象Canvas

每个矩形指定为两个点:(, ) 为左上角 角,和 (, ) 是 像素的位置就在右下角的外侧。x0y0x1y1

例如,左上角指定的矩形 (100,100)和右下角(102,102)是一个正方形 两个像素乘两个像素,包括像素 (101,101) 但不包括 (102,102)。

矩形分为两部分绘制:

  • 轮廓位于其顶部的矩形内,并且 左侧,但在 其底部和右侧的矩形。默认 外观是一个像素宽的黑色边框。

    例如,考虑一个左上角的矩形 (10,10) 和右下角 (11,11)。如果你 请求无边框 () 和 绿色填充 (, 您 将在 (10,10) 处获得一个绿色像素。然而 如果您请求带有黑色的相同选项 边框 (),你会得到 四个黑色像素在 (10,10), (10,11), (11,10), 和 (11,11)。width=0fill='green')width=1

  • 填充是轮廓内的区域。其默认值 外观是透明的。

要在画布上创建矩形对象:C

    id = C.create_rectangle(x0, y0, x1, y1, option, ...)

此构造函数返回矩形的对象 ID 那幅画布。选项包括:

表 13.画布矩形选项

activedash这些选项指定 矩形为 时,即鼠标打开时 矩形的顶部。有关选项值,请参阅 自 及以下。statetk.ACTIVEdashfilloutlineoutlinestipplestipplewidth
activefill
activeoutline
activeoutlinestipple
activestipple
activewidth
dash要在矩形周围生成虚线边框, 使用此选项可指定短划线模式。请参见第 5.13 节 “破折号模式”。
dashoffset使用此选项开始边框的破折号 周期中不同点的模式;请参见第 5.13 节 “破折号模式”。
disableddash这些选项指定 矩形为 .statetk.DISABLED
disabledfill
disabledoutline
disabledoutlinestipple
disabledstipple
disabledwidth
fill默认情况下,矩形的内部为空, 您可以使用 获得此行为。您还可以将选项设置为 一种颜色;请参见第 5.3 节 “颜色”。fill=''
offset使用此选项可更改 室内点画图案。请参见第 5.14 节 “匹配点状图案”。
outline边框的颜色。默认值为 。outline='black'
outlineoffset使用此选项可调整 轮廓中的点状图案;请参见第 5.14 节 “匹配点状图案”。
outlinestipple使用此选项可生成点状轮廓。 模式由位图指定;请参见第 5.7 节 “位图”。
state默认情况下,矩形是在状态中创建的。状态是当鼠标悬停在 矩形。将此选项设置为 使矩形灰显,并且 使其对鼠标事件无响应。tk.NORMALtk.ACTIVEtk.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.CENTERxyanchor=tk.SWxy
disabledfill当文本对象为 . 有关选项值,请参见下文。statetk.DISABLEDfill
disabledstipple文本时要使用的点状图案 禁用。有关选项值,请参见下文。stipple
fill默认文本颜色为黑色,但您可以 通过将选项设置为该颜色,以任何颜色呈现它。请参见第 5.3 节 “颜色”。fill
font如果您不喜欢默认字体,请设置此项 选项,以选择任何字体值。请参见第 5.4 节 “键入字体”。
justify对于多行文本显示,此选项 控制行的对齐方式:(默认值)、或 。tk.LEFTtk.CENTERtk.RIGHT
offset用于渲染 发短信。有关更多信息,请参见第 5.14 节 “匹配点状图案”。
state默认情况下,文本项的状态为 。将此选项设置为无响应 鼠标事件,或将其设置为 使其不可见。tk.NORMALtk.DISABLEDtk.HIDDEN
stipple指示文本如何显示的位图 点缀。默认值为 , 这意味着固体。典型值为 。请参见第 5.7 节 “位图”。stipple=''stipple='gray25'
tags如果是单个字符串,则文本对象标记为 那个字符串。使用字符串元组标记 具有多个标签的对象。请参见第 8.4 节 “画布标签”。
text要在对象中显示的文本,作为 字符串。使用换行符 () 强制换行。'\n'
width如果未指定选项,文本将设置在矩形内 只要最长的线。但是,您可以 同时将选项设置为 尺寸,并且文本的每一行都将是 如有必要,分成较短的行,甚至 在单词中断开,以适应指定的 宽度。请参见第 5.1 节 “尺寸”。widthwidth

您可以更改文本项目中显示的文本。

  • 要从画布上具有对象 ID 的项目中检索文本,请调用 。ICC.itemcget(I, 'text')

  • 将画布上具有对象 ID 的项目中的文本替换为 字符串中的文本,调用 。ICSC.itemconfigure(I, text=S)

许多画布方法允许您操作文本 项目。请参见第 8.6 节 “画布上的方法”,特别是 、 、 和 。

8.15. 窗口对象Canvas

        您可以使用画布窗口对象将任何 Tkinter 小部件放置在画布上。窗口是 一个可以容纳一个 Tkinter 小部件的矩形区域。这 小组件必须是与 相同的顶级窗口的子窗口 画布,或位于 相同的顶级窗口。

        如果要将复杂的多控件对象放在 canvas,您可以使用此方法在画布上放置一个小部件,然后放置其他 该框架内的小部件。Frame

        要在画布上创建新的画布窗口对象:C

    id = C.create_window(x, y, option, ...)

        这将返回对象 窗口对象的 ID。选项包括:

表 15.画布窗口选项

anchor默认值为 , 表示窗口以 (, ) 位置为中心。 请参见第 5.5 节 “锚点”以了解可能的 值。例如,如果指定 ,则将定位窗口 所以点 (, ) 在 其右(东)边缘的中点。anchor=tk.CENTERxyanchor=tk.Exy
height为窗口保留的区域的高度。 如果省略,窗口的大小将适合 所包含微件的高度。有关可能的值,请参见第 5.1 节 “尺寸”。
state默认情况下,窗口项处于该状态。将此选项设置为 使窗口无响应 到鼠标输入,或到 使其隐形。tk.NORMALtk.DISABLEDtk.HIDDEN
tags如果是单个字符串,则窗口标记为 那个字符串。使用字符串元组标记 具有多个标签的窗口。请参见第 8.4 节 “画布标签”。
width为窗口保留的区域的宽度。 如果省略,窗口的大小将适合 所包含微件的宽度。
window使用要放置在画布上的小部件的位置。 如果最初省略了它,您可以稍后调用以将小部件放置在画布上,其中是窗口的对象 ID。window=wwC.itemconfigure (id, window=w)wid

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python中的Tkinter库是一个用于创建图形用户界面(GUI)的标准库。在Tkinter中,可以使用不同的布局管理器来排列和组织界面元素。常见的布局管理器有pack、grid和place。 1. Pack布局:使用pack()方法将组件按照添加的顺序自动排列,默认是从上到下垂直排列。可以使用side参数来指定组件的位置,如LEFT、RIGHT、TOP、BOTTOM等。 ```python from tkinter import * root = Tk() label1 = Label(root, text="Label 1") label1.pack() label2 = Label(root, text="Label 2") label2.pack() button1 = Button(root, text="Button 1") button1.pack(side=LEFT) button2 = Button(root, text="Button 2") button2.pack(side=RIGHT) root.mainloop() ``` 2. Grid布局:使用grid()方法将组件放置在网格中,可以通过行和列的索引来指定组件的位置。可以使用rowspan和columnspan参数来合并单元格。 ```python from tkinter import * root = Tk() label1 = Label(root, text="Label 1") label1.grid(row=0, column=0) label2 = Label(root, text="Label 2") label2.grid(row=0, column=1) button1 = Button(root, text="Button 1") button1.grid(row=1, column=0) button2 = Button(root, text="Button 2") button2.grid(row=1, column=1) root.mainloop() ``` 3. Place布局:使用place()方法将组件放置在指定的坐标位置上。可以使用x和y参数来指定组件的左上角坐标。 ```python from tkinter import * root = Tk() label1 = Label(root, text="Label 1") label1.place(x=10, y=10) label2 = Label(root, text="Label 2") label2.place(x=100, y=10) button1 = Button(root, text="Button 1") button1.place(x=10, y=50) button2 = Button(root, text="Button 2") button2.place(x=100, y=50) root.mainloop() ``` 这些是Tkinter中常用的布局管理器,可以根据需要选择合适的布局方式来设计界面

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无水先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值