【Tkinter系列12/15】 Toplevel窗口方法、小部件方法

25、顶级窗口 方法Toplevel

        顶级窗口是 在窗口管理器下具有独立存在。它 装饰有窗管的装饰,可以 独立移动和调整大小。您的应用程序可以 使用任意数量的顶级窗口。

        对于任何小部件,您可以访问其顶级窗口用:ww.winfo_toplevel()

        创建新的顶级窗口:

w = tk.Toplevel( option, ...)

        选项包括:

        表 34.顶级窗口方法

bgbackground 窗口的背景色。请参见第 5.3 节 “颜色”。
bdborderwidth 边框宽度(以像素为单位);默认值为 。有关可能的值,请参见第 5.1 节 “维度”。另请参阅下面的选项。0relief
class_ 您可以为窗口提供一个 “类”名称。此类名称匹配 针对选项数据库,因此您的应用程序 可以获取用户的配置首选项 (如颜色)按类名。例如,您 可能会设计一系列名为 “尖叫者”,并用.然后你可以把 选项数据库中的一行如下所示: 然后,如果您使用该方法 读取您的选项数据库,所有带有该数据库的小部件 类名将默认为红色背景。这 选项被命名,因为 是保留的 Python中的单词。Toplevelclass_='Screamer'
 *Screamer*background: red
 
.option_readfile()class_class
cursor 鼠标在此位置时出现的光标 窗。请参见第 5.8 节 “游标”。
height 窗口高度;请参见第 5.1 节 “尺寸”。
highlightbackground 颜色 窗口没有焦点时焦点突出显示 重点。请参见第 53 节 “焦点:路由键盘输入”。
highlightcolor 颜色 当窗口具有焦点时,焦点突出显示。
highlightthickness 焦点的粗细突出显示。默认值为 。设置为禁止显示 的焦点突出显示。1highlightthickness=0
menu 要为此窗口提供顶级菜单栏, 提供小部件作为值 此选项。在 MacOS 下,此菜单将显示在 窗口处于活动状态时的屏幕顶部。 在Windows或Unix下,它将出现在 应用程序。Menu
padx 使用此选项可在左侧提供额外的空间 和窗户的右侧。该值为 像素数。
pady 使用此选项可在顶部提供额外的空间 和窗户的底部。该值为 像素数。
relief 通常,顶级窗口没有 3-D 它周围的边界。要获得带阴影的边框,请将选项设置为大于其默认值 值为零,并将该选项设置为第 5.6 节 “浮雕样式”下讨论的常量之一。bdrelief
takefocus 通常,顶级窗口不会获得焦点。 如果需要,请使用 能够集中注意力;请参见第 53 节 “焦点:路由键盘输入”。takefocus=True
width 所需的窗口宽度;请参见第 5.1 节 “尺寸”。

这些方法可用于顶级窗口:

.aspect(nmindminnmaxdmax)

将根窗口的宽度:长度比限制为 范围 [ / , / ]。nmindminnmaxdmax

.deiconify()

如果此窗口已图标化,请将其展开。

.geometry(newGeometry=None)

设置窗口几何图形。对于形式 参数,请参见第 5.10 节 “几何字符串”。如果 参数被省略,当前几何字符串为 返回。

.iconify()

使窗口图标化。

.lift(aboveThis=None)

将此窗口提升到堆叠顺序的顶部 在窗口管理器中,调用此方法时没有 参数。您也可以将其提升到以下位置 通过将该窗口作为 论点。Toplevel

.lower(belowThis=None)

如果省略参数,则将窗口移动到 窗口管理器中堆叠顺序的底部。 您也可以将窗口移动到正下方的位置 通过传递该小部件作为参数来访问其他一些顶级窗口。Toplevel

.maxsize(width=None, height=None)

设置最大窗口大小。如果参数是 省略,返回当前 .(width, height)

.minsize(width=None, height=None)

设置最小窗口大小。如果参数是 省略,将当前最小值作为 2 元组返回。

.overrideredirect(flag=None)

如果使用参数调用,则此 方法设置替代重定向标志,该标志将删除 所有窗口管理器装饰都来自窗口,所以 无法移动、调整大小、图标化或 闭。如果使用参数调用,则恢复窗口管理器修饰,并且 覆盖重定向标志被清除。如果调用 没有参数,它返回 覆盖重定向标志。TrueFalse

请确保在设置此标志之前调用该方法(请参见第 26 节 “通用小部件方法”)。如果 您在进入主循环之前调用它,您的 窗口将在出现之前被禁用。.update_idletasks()

此方法可能不适用于某些Unix和MacOS。 平台。

.resizable(width=None, height=None)

如果为 true,则允许水平调整大小。如果为 true,则允许垂直调整大小。 如果省略参数,则返回当前大小为 一个 2 元组。height

.state(newstate=None)

返回窗口的当前状态,其中之一:

  • 'normal':正常显示。

  • 'iconic':使用方法图标化。.iconify()

  • 'withdrawn':隐藏;请参阅下面的方法。.withdraw()

若要更改窗口的状态,请传递其中一个字符串 以上作为该方法的参数。例如,到 图标化实例 ,使用 "".ToplevelTT.state('iconify')

.title(text=None)

设置窗口标题。如果省略参数, 返回当前标题。

.transient(parent=None)

将此窗口设置为某些窗口的瞬态窗口; 默认父窗口是此窗口的父窗口。parent

此方法对于短期弹出对话框很有用 窗户。瞬态窗口始终出现在前面 的父级。如果父窗口是图标化的, 瞬态也被图标化。

.withdraw()

隐藏窗口。使用 或 恢复它。.deiconify().iconify()

26、通用小部件方法

这些方法在下面所有小部件上定义。在 描述,可以是任何类型的任何小部件。w

w.after(delay_ms, callback=None, *args)

请求 Tkinter 在延迟 at 后调用带有参数的函数 最少毫秒。多长时间没有上限 实际上会接受,但不会调用您的回调 比您请求的要早,并且只会调用它 一次。callbackargsdelay_ms

此方法返回一个整数“之后 标识符“,如果要取消,可以传递给方法 回调。.after_cancel()

如果不传递参数,此方法将等待毫秒,就像在标准 Python 时间模块的函数中一样。callbackdelay_ms.sleep()

w.after_cancel(id)

取消之前设置的回调请求。参数是 原始 .after() 调用返回的结果。.after()id

w.after_idle(func, *args)

请求 Tkinter 调用函数 参数 下次系统空闲时,即下一个 时间没有要处理的事件。这 回调只会被调用一次。如果你想要你的 要再次调用回调,必须再次调用该方法。funcargs.after_idle

w.bell()

发出声音,通常是哔哔声。

w.bind(sequence=None, func=None, add=None)

此方法用于将事件绑定附加到 控件。有关概述,请参见第 54 节 “事件” 的事件绑定。

参数描述了我们期望的事件,参数是当该事件时要调用的函数 发生在小部件上。如果已经有一个 此小部件的该事件的绑定,通常是 旧回调替换为 ,但您可以 通过传递 来保留两个回调。sequencefuncfuncadd='+'

w.bind_all(sequence=None, func=None, add=None)

喜欢 ,但适用于所有 整个应用程序中的小部件。.bind()

w.bind_class(classNamesequence=None, func=None, add=None)

喜欢 ,但适用于所有 命名的小部件(例如,)。.bind()className'Button'

w.bindtags(tagList=None)

如果调用此方法,它将返回 小部件的“绑定标签”作为 字符串序列。绑定标记是 窗口(以“.”开头) 或类的名称(例如,)。'Listbox'

您可以更改绑定级别的顺序 通过将序列作为参数传递来调用 您希望小组件使用的绑定标签。

有关 绑定级别及其与标记的关系。

w.cget(option)

返回 作为 字符串。您还可以获取以下选项的值 小部件作为 。optionww[option]

w.clipboard_append(text)

将给定的字符串追加到 显示器的剪贴板,其中剪切和粘贴字符串 为该显示器的所有应用程序存储。text

w.clipboard_clear()

清除显示器的剪贴板(见上文)。.clipboard_append()

w.column_configure()

请参见第 4.2 节 “其他网格管理方法”。

w.config(option=value, ...)

与 相同。.configure()

w.configure(option=value, ...)

设置一个或多个选项的值。对于 名称为 Python 保留字的选项 (, , ), 使用尾随下划线: , , .classfromin'class_''from_''in_'

您还可以使用语句设置小部件选项的值w

 w [ option ] = value 

如果在 没有参数的小部件,你会得到一个字典 所有小部件的当前选项。键是 选项名称(包括别名,如 )。的值 每个键是:.config()bdborderwidth

  • 对于大多数条目,五元组:(选项名称, 选项数据库键, 选项数据库类, 默认值,当前值);套利

  • 对于别名(如),a 双元组:(别名,等效标准 名称)。'fg'

w.destroy()

调用小部件会破坏其所有子项。w.destroy()ww

w.event_add(virtual, *sequences)

此方法创建一个名称为 由字符串给出 论点。每个附加参数描述一个序列,即 物理事件的描述。当该事件 发生时,将触发新的虚拟事件。virtual

第 54 节 “事件”了解一般情况 虚拟活动的描述。

w.event_delete(virtual, *sequences)

从其虚拟事件中删除物理事件 名称由字符串 给出。如果全部 从给定的虚拟中删除物理事件 事件,该虚拟事件将不再发生。virtual

w.event_generate(sequence, **kw)

此方法会导致事件在没有任何的情况下触发 外部刺激。事件的处理是 与外部触发相同 刺激物。论点 描述要触发的事件。您可以设置 通过提供参数为对象中的选定字段提供值, 其中指定 对象中字段的名称。sequenceEventkeyword=valuekeywordEvent

有关 54 节 “事件”的完整讨论,请参见 事件。

w.event_info(virtual=None)

如果在没有参数的情况下调用此方法,则将 获取当前定义的所有序列 虚拟活动名称。

检索与 虚拟事件,将此方法的名称传递给 虚拟事件,您将获得一系列 物理名称, 或者如果给定的虚拟活动有 从未定义过。sequenceNone

w.focus_displayof()

返回当前具有的窗口的名称 输入焦点与微件位于同一显示器上。如果没有 这样的窗口具有输入焦点,返回 .None

有关一般说明,请参见第 53 节 “焦点:路由键盘输入” 的输入焦点。

w.focus_force()

强制将输入焦点设置为微件。这是 不礼貌。最好等待窗口管理器 给你重点。另请参阅下文。.grab_set_global()

w.focus_get()

返回在此具有焦点的小组件 应用程序(如果有),否则返回 。None

w.focus_lastfor()

此方法检索小部件的名称 最后在顶级窗口中具有输入焦点 包含。如果没有此顶级小部件 曾经有过输入焦点,它返回 顶级小部件。如果此应用程序没有 输入焦点,将 返回将获得焦点的小部件的名称 下次回到此应用程序时。w.focus_lastfor()

w.focus_set()

如果 的应用程序具有输入焦点,则焦点 将跳转到 。如果 的应用程序没有 有重点,Tk会记得给下一个 应用程序获得焦点。wwww

w.grab_current()

如果 显示时有抓斗力, 返回其标识符,否则返回 .请参阅第 54 节 “事件” 关于抢夺的讨论。wNone

w.grab_release()

如果有抓斗,请松开它。w

w.grab_set()

小部件抓取 的所有事件 应用。如果有另一个抢夺,它 走开了。有关 第 54 节 “事件”,请参见 讨论抢夺。ww

w.grab_set_global()

小部件抓取整个屏幕的所有事件。 这被认为是不礼貌的,只能使用 非常需要。任何其他有效的抢夺都会消失。 尝试只将这种可怕的力量用于 善良,从不为邪恶势力服务,好吗?w

w.grab_status()

如果存在本地抓取(由 设置),则此方法返回字符串。如果有全局抓取 力(来自),它 返回。如果没有抓取 力,它返回..grab_set()'local'.grab_set_global()'global'None

w.grid_forget()

请参见第 4.2 节 “其他网格管理方法”。

w.grid_propagate()

请参见第 4.2 节 “其他网格管理方法”。

w.grid_remove()

请参见第 4.2 节 “其他网格管理方法”。

w.image_names()

返回 中所有图像的名称 应用程序作为字符串序列。w

w.keys()

以序列形式返回小组件的选项名称 的字符串。

w.lift(aboveThis=None)

如果参数为 ,则窗口 包含被移动到窗口顶部 堆叠顺序。要将窗口移动到某个窗口上方,作为参数传递。NonewToplevelww

w.lower(belowThis=None)

如果参数为 ,则窗口 包含被移动到窗口底部 堆叠顺序。要将窗口移动到某个窗口的正下方,请作为参数传递。NonewToplevelww

w.mainloop()

必须调用此方法,通常毕竟 创建静态小部件,以开始处理 事件。您可以使用该方法(如下)保留主循环。您也可以致电 此方法在事件处理程序中恢复 主循环。.quit()

w.nametowidget(name)

此方法返回路径名的实际小部件 是。 请参见第 5.11 节 “窗口名称”。如果 未知,此方法将引发.namenameKeyError

w.option_add(patternvaluepriority=None)

此方法将默认选项值添加到 Tkinter 选项数据库。这是一个 指定选项默认值的字符串 的一个或多个小部件。价值观 是以下之一:patternvaluepriority

20 对于小部件的全局默认属性。
40 对于特定 应用。
60 对于来自用户文件的选项,例如 他们的文件。.Xdefaults
80 对于在 应用程序启动。这是默认值 优先级。

更高级别的优先级优先于 较低级别的。有关 选项数据库。参数的语法 to 与资源规范行的一部分相同。pattern.option_add()option-pattern

例如,要获得此资源的效果 规格线:

 *Button*font: times 24 bold

您的应用程序(在此 示例)可能包括以下行:self

   self.bigFont = tkFont.Font(family='times', size=24, weight='bold')
   self.option_add('*Button*font', self.bigFont)

之后创建的任何小部件 执行这些行将默认为粗体 Times 24 字体(除非被构造函数的选项覆盖)。ButtonfontButton

w.option_clear()

此方法从 Tkinter 选项数据库中删除所有选项。这具有回溯的效果 到所有默认值。

w.option_get(nameclassname)

使用此方法检索 来自 Tkinter 选项数据库的选项。第一个 参数是实例键和第二个参数 是类键。如果有任何匹配项,则 返回最匹配的选项的值。 如果没有匹配项,则返回 。''

有关更多信息,请参见第 27 节 “标准化外观” 关于键与选项的匹配方式。

w.option_readfile(fileNamepriority=None)

为了方便用户配置,您可以指定 一个命名文件,用户可以在其中放置他们的首选选项, 使用与文件相同的格式。然后,当你的 应用程序正在初始化,您可以传递该文件的名称 到此方法,该文件中的选项将是 添加到数据库中。如果文件不存在,或者 格式无效,此方法将引发 ..Xdefaultstk.TclError

请参阅第 27 节 “标准化外观” 选项数据库和格式简介 的选项文件。

w.register(function)

此方法围绕 Python 函数创建一个 Tcl 包装器,并返回 Tcl 字符串形式的包装器名称。有关用法的示例 此方法,请参见第 10.2 节 “向条目小部件添加验证”。

w.quit()

此方法退出主循环。有关主要内容的讨论,请参见上文 循环。.mainloop()

w.rowconfigure()

请参见第 4.2 节 “其他网格管理方法”。

w.selection_clear()

如果当前有一个选择(例如 条目小部件中突出显示的文本片段), 清除该选择。w

w.selection_get()

如果当前有选择,则此方法 返回所选文本。如果没有选择, 它提高了.wtk.TclError

w.selection_own()

在 中指定所选内容的所有者 显示,从以前的所有者那里窃取它,如果有的话。ww

w.selection_own_get()

返回当前拥有所选内容的小部件。如果提高,则 没有这样的选择。wtk.TclError

w.tk_focusFollowsMouse()

通常,输入焦点在一个序列中循环 由其层次结构和创建决定的小部件 次序;请参见第 53 节 “焦点:路由键盘输入”。您可以 相反,告诉特金特强制焦点是 无论鼠标在哪里;只需调用此方法。那里 但是,要撤消它并不容易。

w.tk_focusNext()

返回焦点中后面的小组件 遍历序列。有关焦点遍历的讨论,请参见第 53 节 “焦点:路由键盘输入”。w

w.tk_focusPrev()

返回焦点中前面的小组件 遍历序列。w

w.unbind(sequencefuncid=None)

此方法删除事件的绑定 由 描述。如果 第二个参数是绑定到该序列的回调, 该回调被删除,其余的(如果有)是 留在原地。如果省略第二个参数, 删除所有绑定。wsequence

见下文第54节“事件”,了解一般情况 讨论事件绑定。

w.unbind_all(sequence)

删除整个应用程序中的所有事件绑定 对于给定 描述的事件。sequence

w.unbind_class(classNamesequence)

喜欢 ,但适用于所有 命名的小部件(例如,或 )。.unbind()className'Entry''Listbox'

w.update()

此方法强制更新显示。它 只有在你知道自己在做什么时才应该使用, 因为它可能导致不可预测的行为或 循环。永远不应该从事件中调用它 回调或从事件调用的函数 回调。

w.update_idletasks()

更新显示中的一些任务,例如调整大小 和重绘小部件,称为空闲 任务,因为它们通常会延迟 直到应用程序完成事件处理 并已返回主循环等待新的 事件。

如果要强制在之前更新显示 应用程序接下来空闲,在任何 控件。w.update_idletasks()

w.wait_variable(v)

等待变量的值设置完毕,即使该值 不会改变。此方法进入本地等待 循环,因此它不会阻塞其余部分 应用。v

w.wait_visibility(w)

等到小部件(通常为 )是 可见。wToplevel

w.wait_window(w)

等到窗口被破坏。w

w.winfo_children()

返回所有 子项的列表,在其 堆叠顺序从最低(底部)到最高(顶部)。w

w.winfo_class()

返回 的类名(例如,)。w'Button'

w.winfo_containing(rootXrootYdisplayof=0)

此方法用于查找包含以下内容的窗口 点 (, )。 如果该选项为 false,则 坐标相对于应用程序的根目录 窗;如果为 true,则坐标被视为 相对于包含 的顶级窗口。 如果指定的点位于应用程序的某个 顶级窗口,此方法返回该窗口; 否则返回 .rootXrootYdisplayofwNone

w.winfo_depth()

返回 中每像素的位数 显示。w

w.winfo_fpixels(number)

对于任何维度(请参见第 5.1 节 “维度”),此方法 在 的显示屏上以像素为单位返回该距离,作为 类型数 .numberwfloat

w.winfo_geometry()

返回描述大小和 的屏幕位置。请参见第 5.10 节 “几何字符串”。w

警告

几何形状不准确,直到 应用程序已更新其空闲任务。在 特别是,所有几何形状最初都是直到小部件 和几何管理器已经协商了他们的尺寸 和职位。看方法, 以上,在本节中,了解如何确保 小部件的几何形状最高可达 日期。'1x1+0+0'.update_idletasks()

w.winfo_height()

返回当前高度(以像素为单位)。看 上文 下关于几何更新的注释。您可能更喜欢 用法 ,描述 下面,始终是最新的。w.winfo_geometry().winfo_reqheight()

w.winfo_id()

返回在其顶级窗口中唯一标识的整数。您将需要这个 方法,如下。w.winfo_pathname()

w.winfo_ismapped()

此方法返回 true,如果映射,则返回 false 否则。如果微件已格网化,则会对其进行映射 (或放置或包装,如果您使用的是 其他几何体管理器)加入其父级,如果其 父级映射,依此类推,直至顶层 窗。w

w.winfo_manager()

如果尚未网格化(或通过以下之一放置 其他几何管理器),此方法返回一个 空字符串。如果已被网格化或其他方式 放置,它返回一个命名几何图形的字符串 的管理器:此值将是 、 、 或 中的一个。www'grid''pack''place''canvas''text'

w.winfo_name()

此方法返回相对于其 的名称 父母。请参见第 5.11 节 “窗口名称”。也 请参阅下面的 ,以查找 了解如何获取小部件的路径名。w.winfo_pathname()

w.winfo_parent()

返回父级的路径名,或空 字符串 if 是顶级窗口。有关小部件的更多信息,请参见上面的第 5.11 节 “窗口名称” 路径名。ww

w.winfo_pathname(iddisplayof=0)

如果参数为 false,则返回窗口路径名 具有唯一标识符的小部件 应用程序的主窗口。如果是 True,该数字指定同一顶级中的小部件 窗口作为 。有关小部件路径名的讨论,请参见第 5.11 节 “窗口名称”。displayofiddisplayofidw

w.winfo_pixels(number)

对于任何维度(请参阅 尺寸,如上),此方法返回该距离 以 显示的像素为单位,作为整数。numberw

w.winfo_pointerx()

返回与坐标相同的值 返回者 。x.winfo_pointerxy()

w.winfo_pointerxy()

返回一个元组,其中包含 鼠标指针相对于 的坐标 根窗口。如果鼠标指针不在同一位置 屏幕,返回 。(xy)w(-1, -1)

w.winfo_pointery()

返回与坐标相同的值 返回者 。y.winfo_pointerxy()

w.winfo_reqheight()

这些方法返回小部件的请求高度。这是所需的最小高度,以便 的所有内容都有他们需要的房间。这 实际高度可能因协商而有所不同 使用几何管理器。ww

w.winfo_reqwidth()

返回小部件的请求宽度, 包含 所需的最小宽度。与 .winfo_reqheight() 一样,实际宽度 由于与 几何管理器。ww

w.winfo_rgb(color)

对于任何给定的颜色,此方法返回 等效的红-绿-蓝颜色规格为 3元组,其中每个元组 数字是 [0, 65536] 范围内的整数。为 例如,如果 is ,则此方法返回 3 元组。(rgb)color'green'(0, 65535, 0)

有关指定颜色的更多信息,请参见第 5.3 节 “颜色”。

w.winfo_rootx()

返回 根目录左侧的坐标 相对于 父级的窗口。xww

如果有边框,这是 边境。w

w.winfo_rooty()

返回 根窗口顶部的坐标 相对于 的父级。yww

如果有边框,这是 边境。w

w.winfo_screenheight()

返回屏幕的高度(以像素为单位)。

w.winfo_screenmmheight()

返回屏幕的高度(以毫米为单位)。

w.winfo_screenmmwidth()

返回屏幕的宽度(以毫米为单位)。

w.winfo_screenvisual()

返回描述显示方法的字符串 的色彩再现。这通常用于 16 位或 24 位显示器,适用于 256 色显示器。'truecolor''pseudocolor'

w.winfo_screenwidth()

返回屏幕的宽度(以像素为单位)。

w.winfo_toplevel()

返回包含 的顶级窗口。那 窗口支持小部件上的所有方法;请参见第 25 节 “顶级:顶级窗口” 方法”。wToplevel

w.winfo_viewable()

返回值的谓词 如果可见,也就是说,如果它及其所有 同的祖先是 映射。TruewToplevel

w.winfo_width()

返回 的当前宽度(以像素为单位)。看 上文 下关于几何更新的注释。您可能更喜欢 使用该方法, 上述;它始终是最新的。w.winfo_geometry().winfo_reqwidth()

w.winfo_x()

返回 的左侧相对于 的坐标 它的父级。如果有边框,这是外部 边界的边缘。xww

w.winfo_y()

返回 的顶边相对于其 的坐标 父母。如果有边框,这是外部 边界的边缘。yww

self.panic = tk.Button(self, name='panicButton', text='Panic', ...) 

猜你喜欢

转载自blog.csdn.net/gongdiwudu/article/details/132643834