说明
此处讨论小部件方法,凡是可以产生动作的函数均列在此处。包括:定时器、闲暇、绑定、属性配置、布局管理等,属于高级编程的必备知识。了解通用小部件方法,对于客户定制公共类库有极大助益,请务必掌握。
26 通用小部件方法
26.1 定时器
下面在所有小部件上定义了这些方法。在描述中,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在下次系统空闲时(即下次没有要处理的事件时)调用funcargs.after_idle再次调用该方法。
w.bell()
发出声音,通常是蜂鸣声。
26.2 绑定
w.bind(sequence=None, func=None, add=None)
此方法用于将事件绑定附加到小部件。有关事件绑定的概述 ,请参阅第 54 节“事件” 。
该sequencefuncfuncadd='+'。
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')。
您可以通过将您希望小部件使用的绑定标记序列作为参数传递来更改调用绑定级别的顺序。
有关绑定级别及其与标签的关系的讨论, 请参阅第 54 节“事件” 。
26.4 属性值的字符串缓存
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, ...)
设置一个或多个选项的值。class对于名称为 Python 保留字 ( , from, )的选项in,请使用尾随下划线: 'class_', 'from_', 'in_'。
w
w[ option] =value        如果您.config()在不带参数的情况下调用小部件上的方法,您将获得所有小部件当前选项的字典。键是选项名称(包括bdfor等别名borderwidth)。每个键的值是:
-  采取五元组,对于大多数条目,:(选项名称、选项数据库密钥、选项数据库类、默认值、当前值);或者, 
-  一个二元组,对于别名(例如 'fg'),( 别名, 等效标准名称)。
26.5 关于事件
w.destroy()
调用w.destroy()ww
w.event_add(virtual, *sequences)
此方法创建一个虚拟事件,其名称由字符串参数给出virtual
有关虚拟事件的一般描述 , 请参阅第 54 节“事件” 。
w.event_delete(virtual, *sequences)
从名称由字符串指定的虚拟事件中删除物理事件virtual
w.event_generate(sequence, **kw)
此方法无需任何外部刺激即可触发事件。事件的处理与外部刺激触发的事件相同。参数sequenceEvent您可以通过提供参数来设置对象中选定字段的值,其中指定对象中字段的名称 。 keyword=valuekeywordEvent
有关事件的完整讨论 , 请参阅第 54 节“事件” 。
如果您不带参数调用此方法,您将返回所有当前定义的虚拟事件名称的序列。
要检索与虚拟事件关联的物理事件,请将此虚拟事件的名称传递给此方法,您将返回物理名称的序列sequenceNone如果给定的虚拟事件从未定义过。
26.6 关于焦点
w.focus_displayof()
返回当前在与小部件相同的显示器上具有输入焦点的窗口的名称。如果没有这样的窗口具有输入焦点,则返回None。
有关输入焦点的一般描述 , 请参阅第 53 节“焦点:路由键盘输入” 。
w.focus_force()
强制将输入焦点置于小部件上。这是不礼貌的。最好等待窗口管理器为您提供焦点。另请参阅.grab_set_global()下文。
w.focus_get()
返回在此应用程序中具有焦点的小部件(如果有),否则返回None。
w.focus_lastfor()
此方法检索在包含 的顶级窗口中最后获得输入焦点的小部件的名称w.focus_lastfor()则将返回下次返回此应用程序时将获得焦点的小部件的名称。
w.focus_set()
如果wwww
w.grab_current()
wNone。有关抢夺的讨论 ,请参阅第 54 节“事件” 。
w.grab_release()
如果w
w.grab_set()
小部件抓取的应用程序ww
w.grab_set_global()
小部件w
w.grab_status()
如果存在有效的本地抓取(由 设定.grab_set()),则此方法返回字符串 'local'。如果存在有效的全局抓取(来自.grab_set_global()),则返回'global'。如果没有强制抓取,则返回None。
26.4 停靠位置
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,则包含的窗口wToplevelwindow 的上方ww
w.lower(belowThis=None)
如果参数为None,则包含的窗口wToplevelwindow 的正下方ww
w.mainloop()
通常必须在创建所有静态小部件之后调用此方法才能开始处理事件。您可以使用方法(如下)离开主循环.quit()。您还可以在事件处理程序中调用此方法来恢复主循环。
w.nametowidget(name)
此方法返回路径名为 的实际小部件namenameKeyError。
26.5 窗口参数选项
w.option_add(pattern, value, priority=None)
此方法将默认选项值添加到Tkinter 选项数据库。是patternvaluepriority
| 20 | 对于小部件的全局默认属性。 | 
| 40 | 对于特定应用程序的默认属性。 | 
| 60 | 对于来自用户文件(例如他们的 .Xdefaults文件)的选项。 | 
| 80 | 对于应用程序启动后设置的选项。这是默认优先级。 | 
较高级别的优先级优先于较低级别的优先级。有关选项数据库的概述,请参见第 27 节“外观标准化” 。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)执行这些行后创建的任何Button小部件都将默认为粗体 Times 24 字体(除非被构造函数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 包装器 function,并以字符串形式返回 Tcl 包装器名称。有关此方法的使用示例,请参阅第 10.2 节“向Entry 小部件添加验证”。
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 节“焦点:路由键盘输入”。相反,您可以告诉Tkinter将焦点强制置于鼠标所在的位置;只需调用这个方法即可。然而,没有简单的方法可以撤销它。
w.tk_focusNext()
w
w.tk_focusPrev()
w
w.unbind(sequence, funcid=None)
wsequence
有关事件绑定的一般讨论, 请参阅下面第 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)
等待小部件wToplevel)可见。
w.wait_window(w)
等到窗口w
w.winfo_children()
返回所有子级的列表w
w.winfo_class()
返回w'Button')。
w.winfo_containing(rootX, rootY, displayof=0)
该方法用于查找包含点( rootXrootYdisplayof选项为 false,则坐标相对于应用程序的根窗口;如果为 true,则坐标被视为相对于包含 的顶级窗口wNone。
w.winfo_depth()
w
w.winfo_fpixels(number)
对于任何尺寸numberwfloat。
w.winfo_geometry()
返回描述 的大小和屏幕位置的几何字符串w
警告
在应用程序更新其空闲任务之前,几何图形并不准确。特别是,所有几何图形最初都是 '1x1+0+0'直到小部件和几何管理器协商好它们的大小和位置为止。请参阅 .update_idletasks()本节中上面的方法,了解如何确保小部件的几何形状是最新的。
w.winfo_height()
返回当前高度(以w.winfo_geometry()。您可能更喜欢使用.winfo_reqheight()如下所述,它始终是最新的。
w.winfo_id()
w.winfo_pathname()在下面的方法中使用它。
w.winfo_ismapped()
w
如果www'grid'、'pack'、'place'、'canvas'或之一'text'。
此方法返回w.winfo_pathname()下面的 ,了解如何获取小部件的路径名。
返回的父窗口的路径名,如果是顶级窗口,ww
w.winfo_pathname(id, displayof=0)
如果参数为 false,则返回应用程序主窗口中displayofiddisplayofidw
w.winfo_pixels(number)
对于任何尺寸(请参阅上面的尺寸),此方法以整数形式返回显示屏 numberw
w.winfo_pointerx()
x.winfo_pointerxy()。
w.winfo_pointerxy()
返回一个元组,其中包含鼠标指针相对于的根窗口的坐标。如果鼠标指针不在同一屏幕上,则返回。 (x, y)w(-1, -1)
w.winfo_pointery()
y.winfo_pointerxy()。
这些方法返回请求的 widget 高度 ww
w.winfo_reqwidth()
返回请求的 widget 宽度ww
w.winfo_rgb(color)
对于任何给定的颜色,此方法返回等效的红-绿-蓝颜色规范作为 3 元组,其中每个数字都是 [0, 65536) 范围内的整数。例如,如果is ,则此方法返回 3-tuple 。 (r, g, b)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()
返回描述显示器色彩再现方法的字符串。这通常'truecolor'适用于 16 位或 24 位显示器、 'pseudocolor'256 色显示器。
w.winfo_screenwidth()
返回屏幕的宽度(以像素为单位)。
w.winfo_toplevel()
返回包含 的顶级窗口wToplevel;请参见第 25 节,“ Toplevel:顶级窗口方法”。
w.winfo_viewable()
如果谓词可见,即如果它及其所有祖先都被映射, 则返回一个True值。wToplevel
w.winfo_width()
返回当前宽度(以w.winfo_geometry()。您可能更喜欢使用.winfo_reqwidth()上述方法;它始终是最新的。
w.winfo_x()
返回相对于其父级xww
w.winfo_y()
返回相对于其父级yww