Chapter 13. Miscellaneous PerlTk Methods PerlTk 方法杂项: 到目前为止,这本书的大部分章节 集中在特定的几个部件, 这个章节覆盖了方法和子程序 可以被任何部件调用。 你可能从来不需要那些方法, 但有一些 你会经常使用,特别是配置和cget: 大多数方法是基于Tcl winfo 命令( 窗口信息). 一般来说, 命令只是信息, 意思是你没有传入参数给它们, 你只是拿回一个值。 本章 也记录剪贴板和选择的方法用于剪切和粘贴操作 在应用之间, 关注和获取方法,和一些深奥的东西。 13.1. Managing Widgets with configure and cget 管理部件使用 configure and cget 每个部件包含在Perl/Tk 发布版本, 以及所有用户贡献的部件, 可以使用配置和get 方法, set,change,和查询部件熟悉。 无论什么部件, 那些函数参数的格式是相同的, 传回结果具有相同的格式。 配置方法允许你指定或者改变 部件选项的值, 它可以用于检索选择的当前值。 cget 方法不能复制 但是用简单的语法检索相比配置: 13.1.1. The configure Method 配置方法: $widget->configure( [ option => newvalue, ... ] ); 依赖参数传递给它, 配置方法可以做三件事: 1.设置或者改变部件选项的值 2.得到部件任何选项当前的值 3.得到部件当前所有选择的值 设置或者改变一个选项的值,发送选项对 $widget->configure(-option => newvalue); 无论 选项的效果会立即生效,查看一个单独选项当前值, 把它作为参数发送。 返回的值 依赖 是否配置被调用在列表上下文 或者文本上下文。 第2行,配置是被调用在列表上下文( 因为它的返回值是被分配给了一个数组) @info = $widget->configure(-highlightthickness); 在一个列表环境, 标量的数组被返回: 13.2. Building a Family Tree 创建一个Family 树: 下面的方法处理祖宗和孩子 ,他们如何被创建: children, name, PathName, parent, toplevel, manager, and class. 那些方法 返回一个部件的引用或者一个字符串,一个字符串是 一个部件的Tcl-like 名字。 Tcl使用字符串路径名到引用部件, 使用句号作为路径分隔. 在Tcl里,主窗口总是".". 从那时起,程序的工作命名部件 反映了应用的部件层次结构。 所以, .frame 可能引用到第一个Frame 部件创建作为MainWindow的一个child. .frame1 可能指向第2个。程序可能调用第一个按钮 在第一个Frame一样。 .frame.quit_button,这是完全限定路径名字。 Perl/Tk程序员, 我们很少明确指定一个路径名字给我们的部件, 但是pTk代表我们这样做, 现在你知道发生了什么当你看到字符路径名字。 13.10. Widget Position 部件的位置: 本节中的方法处理一个部件的位置: 13.10.1 位置相对于Root窗口: 以确定哪些部件在point(x,y), 使用包含的方法: $which = $widget->containing($x, $y); The $x and $y coordinates must be relative to the root window (or on a Microsoft Windows system, the desktop). An empty string is returned if there is no widget found at those coordinates. If there are several widgets located at those coordinates, the one closest to the front is returned. $x 和$y 协调必须是相对于root窗口(或者 在一个Microsoft Windows system,桌面) 一个空的字符串被返回 如果这里没有部件被找到在, 13.10.2. Coordinates Relative to the Parent 坐标相对于Parent: 你可以得到左上角的坐标通过使用x和y 方法,他们的坐标 ,他们返回一个坐标 相对于 父部件: $x = $widget->x;
$y = $widget->y; 13.10.3 坐标相对于 Root窗口: 得到相对于root窗口的坐标,使用rootx 和rooty : $x = $widget->rootx;
$y = $widget->rooty; 坐标指的是左上角的小部件: 13.10.4. Virtual Desktop Coordinates