25、顶级窗口 方法Toplevel
顶级窗口是 在窗口管理器下具有独立存在。它 装饰有窗管的装饰,可以 独立移动和调整大小。您的应用程序可以 使用任意数量的顶级窗口。
对于任何小部件,您可以访问其顶级窗口用:w
w
.winfo_toplevel()
创建新的顶级窗口:
w = tk.Toplevel( option, ...)
选项包括:
表 34.顶级
窗口方法
bg 或background | 窗口的背景色。请参见第 5.3 节 “颜色”。 |
bd 或borderwidth | 边框宽度(以像素为单位);默认值为 。有关可能的值,请参见第 5.1 节 “维度”。另请参阅下面的选项。0 relief |
class_ | 您可以为窗口提供一个 “类”名称。此类名称匹配 针对选项数据库,因此您的应用程序 可以获取用户的配置首选项 (如颜色)按类名。例如,您 可能会设计一系列名为 “尖叫者”,并用.然后你可以把 选项数据库中的一行如下所示: 然后,如果您使用该方法 读取您的选项数据库,所有带有该数据库的小部件 类名将默认为红色背景。这 选项被命名,因为 是保留的 Python中的单词。Toplevel class_='Screamer' .option_readfile() class_ class |
cursor | 鼠标在此位置时出现的光标 窗。请参见第 5.8 节 “游标”。 |
height | 窗口高度;请参见第 5.1 节 “尺寸”。 |
highlightbackground | 颜色 窗口没有焦点时焦点突出显示 重点。请参见第 53 节 “焦点:路由键盘输入”。 |
highlightcolor | 颜色 当窗口具有焦点时,焦点突出显示。 |
highlightthickness | 焦点的粗细突出显示。默认值为 。设置为禁止显示 的焦点突出显示。1 highlightthickness=0 |
menu | 要为此窗口提供顶级菜单栏, 提供小部件作为值 此选项。在 MacOS 下,此菜单将显示在 窗口处于活动状态时的屏幕顶部。 在Windows或Unix下,它将出现在 应用程序。Menu |
padx | 使用此选项可在左侧提供额外的空间 和窗户的右侧。该值为 像素数。 |
pady | 使用此选项可在顶部提供额外的空间 和窗户的底部。该值为 像素数。 |
relief | 通常,顶级窗口没有 3-D 它周围的边界。要获得带阴影的边框,请将选项设置为大于其默认值 值为零,并将该选项设置为第 5.6 节 “浮雕样式”下讨论的常量之一。bd relief |
takefocus | 通常,顶级窗口不会获得焦点。 如果需要,请使用 能够集中注意力;请参见第 53 节 “焦点:路由键盘输入”。takefocus=True |
width | 所需的窗口宽度;请参见第 5.1 节 “尺寸”。 |
这些方法可用于顶级窗口:
.aspect(
nmin
, dmin
, nmax
, dmax
)
将根窗口的宽度:长度比限制为 范围 [ / , / ]。nmin
dmin
nmax
dmax
.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)
如果使用参数调用,则此 方法设置替代重定向标志,该标志将删除 所有窗口管理器装饰都来自窗口,所以 无法移动、调整大小、图标化或 闭。如果使用参数调用,则恢复窗口管理器修饰,并且 覆盖重定向标志被清除。如果调用 没有参数,它返回 覆盖重定向标志。True
False
请确保在设置此标志之前调用该方法(请参见第 26 节 “通用小部件方法”)。如果 您在进入主循环之前调用它,您的 窗口将在出现之前被禁用。.update_idletasks()
此方法可能不适用于某些Unix和MacOS。 平台。
.resizable(width=None, height=None)
如果为 true,则允许水平调整大小。如果为 true,则允许垂直调整大小。 如果省略参数,则返回当前大小为 一个 2 元组。height
.state(newstate=None)
返回窗口的当前状态,其中之一:
-
'normal'
:正常显示。 -
'iconic'
:使用方法图标化。.iconify()
-
'withdrawn'
:隐藏;请参阅下面的方法。.withdraw()
若要更改窗口的状态,请传递其中一个字符串 以上作为该方法的参数。例如,到 图标化实例 ,使用 "".Toplevel
T
T
.state('iconify')
.title(text=None)
设置窗口标题。如果省略参数, 返回当前标题。
.transient(parent=None)
将此窗口设置为某些窗口的瞬态窗口; 默认父窗口是此窗口的父窗口。parent
此方法对于短期弹出对话框很有用 窗户。瞬态窗口始终出现在前面 的父级。如果父窗口是图标化的, 瞬态也被图标化。
.withdraw()
隐藏窗口。使用 或 恢复它。.deiconify()
.iconify()
26、通用小部件方法
这些方法在下面所有小部件上定义。在 描述,可以是任何类型的任何小部件。w
w
.after(delay_ms
, callback=None, *args
)
请求 Tkinter 在延迟 at 后调用带有参数的函数 最少毫秒。多长时间没有上限 实际上会接受,但不会调用您的回调 比您请求的要早,并且只会调用它 一次。callback
args
delay_ms
此方法返回一个整数“之后 标识符“,如果要取消,可以传递给方法 回调。.after_cancel()
如果不传递参数,此方法将等待毫秒,就像在标准 Python 时间模块的函数中一样。callback
delay_ms
.sleep()
w
.after_cancel(id
)
取消之前设置的回调请求。参数是 原始 .after()
调用返回的结果。.after()
id
w
.after_idle(func
, *args
)
请求 Tkinter 调用函数 参数 下次系统空闲时,即下一个 时间没有要处理的事件。这 回调只会被调用一次。如果你想要你的 要再次调用回调,必须再次调用该方法。func
args
.after_idle
w
.bell()
发出声音,通常是哔哔声。
w
.bind(sequence
=None, func
=None, add
=None)
此方法用于将事件绑定附加到 控件。有关概述,请参见第 54 节 “事件” 的事件绑定。
参数描述了我们期望的事件,参数是当该事件时要调用的函数 发生在小部件上。如果已经有一个 此小部件的该事件的绑定,通常是 旧回调替换为 ,但您可以 通过传递 来保留两个回调。sequence
func
func
add='+'
w
.bind_all(sequence
=None, func
=None, add
=None)
喜欢 ,但适用于所有 整个应用程序中的小部件。.bind()
w
.bind_class(className
, sequence
=None, func
=None, add=None)
喜欢 ,但适用于所有 命名的小部件(例如,)。.bind()
className
'Button'
w
.bindtags(tagList
=None)
如果调用此方法,它将返回 小部件的“绑定标签”作为 字符串序列。绑定标记是 窗口(以“.”
开头) 或类的名称(例如,)。'Listbox'
您可以更改绑定级别的顺序 通过将序列作为参数传递来调用 您希望小组件使用的绑定标签。
有关 绑定级别及其与标记的关系。
w
.cget(option
)
返回 作为 字符串。您还可以获取以下选项的值 小部件作为 。option
w
w
[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 保留字的选项 (, , ), 使用尾随下划线: , , .class
from
in
'class_'
'from_'
'in_'
您还可以使用语句设置小部件选项的值w
w [ option ] = value
如果在 没有参数的小部件,你会得到一个字典 所有小部件的当前选项。键是 选项名称(包括别名,如 )。的值 每个键是:.config()
bd
borderwidth
-
对于大多数条目,五元组:(选项名称, 选项数据库键, 选项数据库类, 默认值,当前值);套利
-
对于别名(如),a 双元组:(别名,等效标准 名称)。
'fg'
w
.destroy()
调用小部件会破坏其所有子项。w
.destroy()w
w
w
.event_add(virtual
, *sequences
)
此方法创建一个名称为 由字符串给出 论点。每个附加参数描述一个序列,即 物理事件的描述。当该事件 发生时,将触发新的虚拟事件。virtual
见第 54 节 “事件”了解一般情况 虚拟活动的描述。
w
.event_delete(virtual
, *sequences
)
从其虚拟事件中删除物理事件 名称由字符串 给出。如果全部 从给定的虚拟中删除物理事件 事件,该虚拟事件将不再发生。virtual
w
.event_generate(sequence
, **kw
)
此方法会导致事件在没有任何的情况下触发 外部刺激。事件的处理是 与外部触发相同 刺激物。论点 描述要触发的事件。您可以设置 通过提供参数为对象中的选定字段提供值, 其中指定 对象中字段的名称。sequence
Event
keyword
=value
keyword
Event
有关 54 节 “事件”的完整讨论,请参见 事件。
如果在没有参数的情况下调用此方法,则将 获取当前定义的所有序列 虚拟活动名称。
检索与 虚拟事件,将此方法的名称传递给 虚拟事件,您将获得一系列 物理名称, 或者如果给定的虚拟活动有 从未定义过。sequence
None
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会记得给下一个 应用程序获得焦点。w
w
w
w
w
.grab_current()
如果 显示时有抓斗力, 返回其标识符,否则返回 .请参阅第 54 节 “事件” 关于抢夺的讨论。w
None
w
.grab_release()
如果有抓斗,请松开它。w
w
.grab_set()
小部件抓取 的所有事件 应用。如果有另一个抢夺,它 走开了。有关 第 54 节 “事件”,请参见 讨论抢夺。w
w
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)
如果参数为 ,则窗口 包含被移动到窗口顶部 堆叠顺序。要将窗口移动到某个窗口上方,作为参数传递。None
w
Toplevel
w
w
w
.lower(belowThis=None)
如果参数为 ,则窗口 包含被移动到窗口底部 堆叠顺序。要将窗口移动到某个窗口的正下方,请作为参数传递。None
w
Toplevel
w
w
w
.mainloop()
必须调用此方法,通常毕竟 创建静态小部件,以开始处理 事件。您可以使用该方法(如下)保留主循环。您也可以致电 此方法在事件处理程序中恢复 主循环。.quit()
w
.nametowidget(name
)
此方法返回路径名的实际小部件 是。 请参见第 5.11 节 “窗口名称”。如果 未知,此方法将引发.name
name
KeyError
w
.option_add(pattern
, value
, priority
=None)
此方法将默认选项值添加到 Tkinter 选项数据库。这是一个 指定选项默认值的字符串 的一个或多个小部件。价值观 是以下之一:pattern
value
priority
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 字体(除非被构造函数的选项覆盖)。Button
font
Button
w
.option_clear()
此方法从 Tkinter 选项数据库中删除所有选项。这具有回溯的效果 到所有默认值。
w
.option_get(name
, classname
)
使用此方法检索 来自 Tkinter 选项数据库的选项。第一个 参数是实例键和第二个参数 是类键。如果有任何匹配项,则 返回最匹配的选项的值。 如果没有匹配项,则返回 。''
有关更多信息,请参见第 27 节 “标准化外观” 关于键与选项的匹配方式。
w
.option_readfile(fileName
, priority
=None)
为了方便用户配置,您可以指定 一个命名文件,用户可以在其中放置他们的首选选项, 使用与文件相同的格式。然后,当你的 应用程序正在初始化,您可以传递该文件的名称 到此方法,该文件中的选项将是 添加到数据库中。如果文件不存在,或者 格式无效,此方法将引发 ..Xdefaults
tk.TclError
请参阅第 27 节 “标准化外观” 选项数据库和格式简介 的选项文件。
w
.register(function
)
此方法围绕 Python 函数
创建一个 Tcl 包装器,并返回 Tcl 字符串形式的包装器名称。有关用法的示例 此方法,请参见第 10.2 节 “向条目小部件添加验证”。
w
.quit()
此方法退出主循环。有关主要内容的讨论,请参见上文 循环。.mainloop()
w
.rowconfigure()
请参见第 4.2 节 “其他网格管理方法”。
w
.selection_clear()
如果当前有一个选择(例如 条目小部件中突出显示的文本片段), 清除该选择。w
w
.selection_get()
如果当前有选择,则此方法 返回所选文本。如果没有选择, 它提高了.w
tk.TclError
w
.selection_own()
在 中指定所选内容的所有者 显示,从以前的所有者那里窃取它,如果有的话。w
w
w
.selection_own_get()
返回当前拥有所选内容的小部件。如果提高,则 没有这样的选择。w
tk.TclError
w
.tk_focusFollowsMouse()
通常,输入焦点在一个序列中循环 由其层次结构和创建决定的小部件 次序;请参见第 53 节 “焦点:路由键盘输入”。您可以 相反,告诉特金特强制焦点是 无论鼠标在哪里;只需调用此方法。那里 但是,要撤消它并不容易。
w
.tk_focusNext()
返回焦点中后面的小组件 遍历序列。有关焦点遍历的讨论,请参见第 53 节 “焦点:路由键盘输入”。w
w
.tk_focusPrev()
返回焦点中前面的小组件 遍历序列。w
w
.unbind(sequence
, funcid
=None)
此方法删除事件的绑定 由 描述。如果 第二个参数是绑定到该序列的回调, 该回调被删除,其余的(如果有)是 留在原地。如果省略第二个参数, 删除所有绑定。w
sequence
见下文第54节“事件”,了解一般情况 讨论事件绑定。
w
.unbind_all(sequence
)
删除整个应用程序中的所有事件绑定 对于给定 描述的事件。sequence
w
.unbind_class(className
, sequence
)
喜欢 ,但适用于所有 命名的小部件(例如,或 )。.unbind()
className
'Entry'
'Listbox'
w
.update()
此方法强制更新显示。它 只有在你知道自己在做什么时才应该使用, 因为它可能导致不可预测的行为或 循环。永远不应该从事件中调用它 回调或从事件调用的函数 回调。
更新显示中的一些任务,例如调整大小 和重绘小部件,称为空闲 任务,因为它们通常会延迟 直到应用程序完成事件处理 并已返回主循环等待新的 事件。
如果要强制在之前更新显示 应用程序接下来空闲,在任何 控件。w
.update_idletasks()
w
.wait_variable(v
)
等待变量的值设置完毕,即使该值 不会改变。此方法进入本地等待 循环,因此它不会阻塞其余部分 应用。v
w
.wait_visibility(w
)
等到小部件(通常为 )是 可见。w
Toplevel
w
.wait_window(w
)
等到窗口被破坏。w
w
.winfo_children()
返回所有 子项的列表,在其 堆叠顺序从最低(底部)到最高(顶部)。w
w
.winfo_class()
返回 的类名(例如,)。w
'Button'
w
.winfo_containing(rootX
, rootY
, displayof
=0)
此方法用于查找包含以下内容的窗口 点 (, )。 如果该选项为 false,则 坐标相对于应用程序的根目录 窗;如果为 true,则坐标被视为 相对于包含 的顶级窗口。 如果指定的点位于应用程序的某个 顶级窗口,此方法返回该窗口; 否则返回 .rootX
rootY
displayof
w
None
w
.winfo_depth()
返回 中每像素的位数 显示。w
w
.winfo_fpixels(number
)
对于任何维度(请参见第 5.1 节 “维度”),此方法 在 的显示屏上以像素为单位返回该距离,作为 类型数 .number
w
float
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
w
w
'grid'
'pack'
'place'
'canvas'
'text'
此方法返回相对于其 的名称 父母。请参见第 5.11 节 “窗口名称”。也 请参阅下面的 ,以查找 了解如何获取小部件的路径名。w
.winfo_pathname()
返回父级的路径名,或空 字符串 if 是顶级窗口。有关小部件的更多信息,请参见上面的第 5.11 节 “窗口名称” 路径名。w
w
w
.winfo_pathname(id
, displayof
=0)
如果参数为 false,则返回窗口路径名 具有唯一标识符的小部件 应用程序的主窗口。如果是 True,该数字指定同一顶级中的小部件 窗口作为 。有关小部件路径名的讨论,请参见第 5.11 节 “窗口名称”。displayof
id
displayof
id
w
w
.winfo_pixels(number)
对于任何维度(请参阅 尺寸,如上),此方法返回该距离 以 显示的像素为单位,作为整数。number
w
w
.winfo_pointerx()
返回与坐标相同的值 返回者 。x
.winfo_pointerxy()
w
.winfo_pointerxy()
返回一个元组,其中包含 鼠标指针相对于 的坐标 根窗口。如果鼠标指针不在同一位置 屏幕,返回 。(
x
, y
)w
(-1, -1)
w
.winfo_pointery()
返回与坐标相同的值 返回者 。y
.winfo_pointerxy()
这些方法返回小部件的请求高度。这是所需的最小高度,以便 的所有内容都有他们需要的房间。这 实际高度可能因协商而有所不同 使用几何管理器。w
w
w
.winfo_reqwidth()
返回小部件的请求宽度, 包含 所需的最小宽度。与 .winfo_reqheight() 一样,实际宽度 由于与 几何管理器。w
w
w
.winfo_rgb(color)
对于任何给定的颜色,此方法返回 等效的红-绿-蓝颜色规格为 3元组,其中每个元组 数字是 [0, 65536] 范围内的整数。为 例如,如果 is ,则此方法返回 3 元组。(
r
, g
, b
)color
'green'
(0, 65535, 0)
有关指定颜色的更多信息,请参见第 5.3 节 “颜色”。
w
.winfo_rootx()
返回 根目录左侧的坐标 相对于 父级的窗口。x
w
w
如果有边框,这是 边境。w
w
.winfo_rooty()
返回 根窗口顶部的坐标 相对于 的父级。y
w
w
如果有边框,这是 边境。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 节 “顶级:顶级窗口” 方法”。w
Toplevel
w
.winfo_viewable()
返回值的谓词 如果可见,也就是说,如果它及其所有 同的祖先是 映射。True
w
Toplevel
w
.winfo_width()
返回 的当前宽度(以像素为单位)。看 上文 下关于几何更新的注释。您可能更喜欢 使用该方法, 上述;它始终是最新的。w
.winfo_geometry()
.winfo_reqwidth()
w
.winfo_x()
返回 的左侧相对于 的坐标 它的父级。如果有边框,这是外部 边界的边缘。x
w
w
w
.winfo_y()
返回 的顶边相对于其 的坐标 父母。如果有边框,这是外部 边界的边缘。y
w
w
self.panic = tk.Button(self, name='panicButton', text='Panic', ...)