当前位置:   article > 正文

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

tk.toplevel

 25  Toplevel.:顶级窗口方法

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

        对于任何小部件w,您可以使用 访问其顶级小部件w.winfo_toplevel()

        要创建新的顶级窗口:

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

        选项包括:

        表 34. Toplevel窗口方法

bg或者background窗口的背景颜色。请参见第 5.3 节“颜色”
bd或者borderwidth边框宽度(以像素为单位);默认为0. 有关可能的值,请参见第 5.1 节“尺寸”。另请参阅relief下面的选项。
class_您可以给Toplevel窗口一个“类”名称。这些名称与选项数据库相匹配,因此您的应用程序可以通过类名称获取用户的配置首选项(例如颜色)。例如,您可以设计一系列名为“尖叫者”的弹出窗口,并使用 来设置它们 class_='Screamer'。然后您可以在选项数据库中添加一行,如下所示:
*Screamer*background: red
然后,如果您使用该 .option_readfile()方法读取选项数据库,则具有该类名称的所有小部件将默认为红色背景。class_ 该选项因class是Python中的保留字 而得名。
cursor当鼠标位于此窗口中时出现的光标。请参见第 5.8 节“光标”
height窗户高度;请参见第 5.1 节“尺寸”
highlightbackground当窗口没有焦点时焦点突出显示的颜色 。请参见第 53 节“焦点:路由键盘输入”
highlightcolor当窗口具有焦点时焦点突出显示的 颜色。
highlightthickness焦点高光 的厚度。默认为 1. 设置highlightthickness=0为抑制焦点高亮显示。
menu要为该窗口提供顶级菜单栏,请提供一个Menu小部件作为该选项的值。在 MacOS 下,当窗口处于活动状态时,此菜单将出现在屏幕顶部。在 Windows 或 Unix 下,它将出现在应用程序的顶部。
padx使用此选项可以在窗口的左侧和右侧提供额外的空间。该值是像素数。
pady使用此选项可以在窗口的顶部和底部提供额外的空间。该值是像素数。
relief通常,顶级窗口周围没有 3D 边框。要获得阴影边框,请将该 bd选项设置为大于其默认值零,并将该选项设置为第 5.6 节 “浮雕样式”relief 中讨论的常量之一 。
takefocus通常,顶级窗口不会获得焦点。takefocus=True如果您希望它能够聚焦,请使用;请参见第 53 节“焦点:路由键盘输入”
width所需的窗口宽度;请参见第 5.1 节“尺寸”
 

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

.aspect(nmindminnmaxdmax)

将根窗口的宽度:长度比限制在范围 [ nmindminnmax/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 参数调用,则恢复窗口管理器装饰并清除覆盖重定向标志。如果不带参数调用,它将返回覆盖重定向标志的当前状态。

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

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

.resizable(width=None, height=None)

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

.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在延迟至少几毫秒后调用callback带参数的函数 。实际花费的时间没有上限,但是您的回调不会比您请求的时间更早被调用,并且只会被调用一次。 argsdelay_ms

.after_cancel()此方法返回一个“标识符后”的整数,如果您想取消回调, 可以将该整数传递给该方法。

如果不传递callback 参数,此方法将等待delay_ms 几毫秒,就像标准 Python模块.sleep() 的函数一样。 time

w.after_cancel(id)

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

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(classNamesequence=None, func=None, add=None)

与 类似.bind(),但适用于所有名为className(例如 'Button')的小部件。

w.bindtags(tagList=None)

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

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

有关绑定级别及其与标签的关系的讨论, 请参阅第 54 节“事件” 。

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, ...)

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

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

   w[option] = value

如果您.config()在不带参数的情况下调用小部件上的方法,您将获得所有小部件当前选项的字典。键是选项名称(包括bdfor等别名borderwidth)。每个键的值是:

  • 对于大多数条目,五元组:(选项名称、选项数据库密钥、选项数据库类、默认值、当前值);或者,

  • 对于别名(例如'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=valuekeywordEvent

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

w.event_info(virtual=None)

如果您不带参数调用此方法,您将返回所有当前定义的虚拟事件名称的序列。

要检索与虚拟事件关联的物理事件,请将此虚拟事件的名称传递给此方法,您将返回物理名称的序列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()

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

w.grab_current()

w如果的显示 有效,则返回其标识符,否则返回None。有关抢夺的讨论 ,请参阅第 54 节“事件” 。

w.grab_release()

如果w有有效的抓握,请将其释放。

w.grab_set()

小部件抓取的应用程序w的所有事件。w如果有另一次强力的抓握,它就会消失。有关抢夺的讨论 ,请参阅第 54 节“事件” 。

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将移动到窗口堆叠顺序的顶部。要将窗口移动到某个 Toplevelwindow 的上方w,请w作为参数传递。

w.lower(belowThis=None)

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

w.mainloop()

通常必须在创建所有静态小部件之后调用此方法才能开始处理事件。您可以使用方法(如下)离开主循环.quit()。您还可以在事件处理程序中调用此方法来恢复主循环。

w.nametowidget(name)

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

w.option_add(patternvaluepriority=None)

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

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

较高级别的优先级优先于较低级别的优先级。有关选项数据库的概述,请参见第 27 节“外观标准化” 。pattern参数的语法与 资源规范行的部分 .option_add()相同 。option-pattern

例如,要获得此资源规范行的效果:

*Button*font: times 24 bold

您的应用程序(self在本例中)可能包含以下几行:

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

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

w.option_clear()

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

w.option_get(nameclassname)

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

有关按键如何与选项匹配的更多信息 , 请参阅第 27 节“标准化外观” 。

w.option_readfile(fileNamepriority=None)

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

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

w.register(function)

此方法围绕 Python 创建 Tcl 包装器 function,并以字符串形式返回 Tcl 包装器名称。有关此方法的使用示例,请参阅第 10.2 节“向Entry 小部件添加验证”

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 节“焦点:路由键盘输入”。相反,您可以告诉Tkinter将焦点强制置于鼠标所在的位置;只需调用这个方法即可。然而,没有简单的方法可以撤销它。

w.tk_focusNext()

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

w.tk_focusPrev()

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

w.unbind(sequencefuncid=None)

w此方法删除所描述的事件的 绑定sequence。如果第二个参数是绑定到该序列的回调,则该回调将被删除,其余部分(如果有)保留在原处。如果省略第二个参数,则删除所有绑定。

有关事件绑定的一般讨论, 请参阅下面第 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)

等待小部件w(通常为Toplevel)可见。

w.wait_window(w)

等到窗口w被破坏。

w.winfo_children()

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

w.winfo_class()

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

w.winfo_containing(rootXrootYdisplayof=0)

该方法用于查找包含点( rootXrootY) 的窗口。如果该displayof选项为 false,则坐标相对于应用程序的根窗口;如果为 true,则坐标被视为相对于包含 的顶级窗口w。如果指定点位于应用程序的顶级窗口之一,则此方法返回该窗口;否则返回None

w.winfo_depth()

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

w.winfo_fpixels(number)

对于任何尺寸number(请参阅第 5.1 节“尺寸”),此方法返回 显示器上的距离(以像素为单位)w,作为 类型的数字float

w.winfo_geometry()

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

警告

在应用程序更新其空闲任务之前,几何图形并不准确。特别是,所有几何图形最初都是 '1x1+0+0'直到小部件和几何管理器协商好它们的大小和位置为止。请参阅 .update_idletasks()本节中上面的方法,了解如何确保小部件的几何形状是最新的。

w.winfo_height()

返回当前高度(以w像素为单位)。请参阅上面关于几何更新的备注.winfo_geometry()。您可能更喜欢使用.winfo_reqheight()如下所述,它始终是最新的。

w.winfo_id()

w 返回一个在其顶级窗口内 唯一标识的整数。您将需要.winfo_pathname()在下面的方法中使用它。

w.winfo_ismapped()

w如果已映射, 此方法返回 true ,否则返回 false。如果一个小部件已经被网格化(或者放置或打包,如果您正在使用其他几何管理器之一)到其父级,并且如果其父级被映射,等等直到顶级窗口,则该小部件被映射。

w.winfo_manager()

如果w尚未网格化(或通过其他几何管理器之一放置),则此方法返回一个空字符串。如果w已进行网格化或以其他方式放置,它将返回一个命名几何管理器的字符串w:该值将为'grid''pack''place''canvas'或之一'text'

w.winfo_name()

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

w.winfo_parent()

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

w.winfo_pathname(iddisplayof=0)

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

w.winfo_pixels(number)

对于任何尺寸(请参阅上面的尺寸),此方法以整数形式返回显示屏 number上的距离(以像素为单位)。w

w.winfo_pointerx()

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

w.winfo_pointerxy()

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

w.winfo_pointery()

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

w.winfo_reqheight()

这些方法返回请求的 widget 高度 w。这是必要的最小高度,以便所有w内容都有所需的空间。由于与几何经理协商,实际高度可能会有所不同。

w.winfo_reqwidth()

返回请求的 widget 宽度w,即包含所需的最小宽度w。与 一样 .winfo_reqheight(),由于与几何管理器的协商,实际宽度可能会有所不同。

w.winfo_rgb(color)

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

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

w.winfo_rootx()

返回的根窗口x左侧相对于的父窗口的坐标。 ww

如果w有边框,则这是边框的外边缘。

w.winfo_rooty()

返回的根窗口y顶边相对于的父窗口的坐标。 ww

如果w有边框,则这是边框的上边缘。

w.winfo_screenheight()

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

w.winfo_screenmmheight()

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

w.winfo_screenmmwidth()

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

w.winfo_screenvisual()

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

w.winfo_screenwidth()

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

w.winfo_toplevel()

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

w.winfo_viewable()

如果谓词可见,即如果它及其所有祖先都被映射, 则返回一个True值。wToplevel

w.winfo_width()

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

w.winfo_x()

返回相对于其父级x的左侧坐标。w如果w有边框,则这是边框的外边缘。

w.winfo_y()

返回相对于其父级y的顶边的坐标。w如果w有边框,则这是边框的外边缘。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号