在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
介绍: perl/Tk(也被称为pTK) 是一个模块和代码的收集,尝试 简单的配置Tk 8 部件工具包到强大的词素文文字, 动态内存,I/O, 和面向对象,它是一种解释脚本语言 来制作部件和程序 使用GUI
让我们开始,作为其他教程的开始, 以"Hello World"程序创建一个文件 叫做Hello.pl 键入下面的内容到它这里: #!/usr/local/bin/perl 第一行 #!/usr/local/bin/perl 在Windows里是不需要 在Linux 它告诉脚本语言过程的名字
当解释器遇到这行时,它会加载tk组件 来创建项目。
这是用于程序员来交流的 一个程序员不能被期望记住一个脚本的任何东西 因此使用一个注释来写下 在下次它需要编辑的时候,他可以读注释和了解程序 第四行,my $mw = new MainWindow; 会创建一个windows 窗体 GUI元素会被放置 变量$mv 是MainWindow类型的一个对象 , 我们需要这个元素当我们需要放置任何部件的时候
标记为标签和写"Hello world" ,你可以改变文本到任何你想要标注的命令结构 $label 这个变量分配到特定的部件 部件必须有一个唯一的变量 这个名字可以用于当部件被访问 $mv-> $mv 是一个MainWindow 的部件 我们需要放置我们的label部件在这个窗体内 Label(-text=>"Hello World") 'Label' 是一个部件的名字,一个部件是一个用户接口对象 在图形用户接口?
对于文本,你使用文本部件 对于entry ,entry 部件如果你需要,你可以看到更多的部件。 text=>"Hello World" 这个选项的部件是说 这个部件必须给定文本 "Hello World"选项 一个按钮部件没有label部件的所有的选项
请注意 操作用在这里'=>' 相对于早期使用的'->' 在$mw -> 一个使用 减号 另外一个使用=号 两者不要混淆。 你可以保持写其他的选项 可以可以写在这里比如,让我们做一个label 用于显示文本框’Hello World" 另外行 类似于Hello World 程序
text 是否出现为raised, sunken, flat 等等 对于一个特定的部件, 阅读手册 它列出了每个部件和每个选项, 如果你想要用Perl编程,
$mw -> Label(-text=>"Hello World", 接下来是 ->pack(); 这个会pack 部件 '$label' 到windows '$mw'
在这种情况下, pack 没有选项 ,但不总是这样。 my $label = $mw -> Label(-text=>"Hello World")
my $label = $mw -> Label(-text=>"Hello World"); #We created the widget
my $WidgetVariable = $Window -> WidgetType(?Option 1=>Value 1, ?Option 2=>Value 下面的3行: 将创建和显示一个按钮 ,部件变量 是'$button' 当我们查看这个选项时候, 我们会找到两个选项 'text' 和 'command' 给出的text 是Quit 因此按钮会有一个text "Quit" 在它上面 命令选项确定 上面应该发生 当用户clik 按钮, 你可以指定一个函数来执行,当用户clicks 一个按钮 在这种情况下
你可以调用函数,你已经创建的。
sub exitProgam { 下一行-MainLoop; 是主循环或者Event Loop 它的工作是调用callbacks 来响应events 比如 button 按下或者定时器触发, 如果这行丢失, 程序会允许,退出 不等待用户做任何事情, 这是另外一种 Tk程序必须的 Widgets 1 : Button, Entry, Label 按钮,Entry,标签 一个widget 是一个用户接口对象 在X 图形用户接口? 我们只是说 它是对象的名字,出现在屏幕上 这里有很多类型部件 如果你要显示一个按钮, 这里有很多部件类型 如果你要显示一个按钮,你使用按钮部件 比如文本框,你使用文本框部件 输入框, entry 部件 my $WidgetVariable = $Window > WidgetType(?Option 1=>Value 1, ?Option 2=>Value 2 ??) > pack();
首先是 部件变量, 第一件事是 部件变量 我在之前已经解释了 所有部件的部件变量 必须是一个唯一的,被使用 当部件需要被2次访问 每个部件有一些选项,可以用来配置 这通常当部件被定义时就被做了,但是也可以后面做 最后的事情是命令 每个部件有一些命令,可以用于配置或者让它做一些事情。
pack 是一个布局管理器另外一个布局管理器是'grid' 我们后面会解释 pack 是更加简单的相比grid
这个会使一个按钮来执行一些代码,当按钮被执行 这个通常指向一个函数 因此当按钮被点击后,这个函数会运行一个按钮 这个按钮时创建使用HTML 输入tag: 一些选项: text=>"TEXT" TEXT 会被显示在按钮上 command=>CALLBACK CALLBACK 当按钮被点击时被调用 #!/usr/local/bin/perl 你可能已经注意到 我是用了一个 slash(\) 在这个命令回调 Entry: 输入框
已经输入 显示一个插入光标来表明 新的字符会被插入 一个entry 元素 显示如下: 一些选项: width=>NUMBER 输入域的宽度 应该是一个整数 textvariable=>\$VARIABLE 变量 VARIABLE 的内容 会显示在部件,如果text 在部件被编辑, 语法: 描述 Example $widget > get(); 文本在输入域可以通过这个命令拿到 $name = $ent > get();
entry FIRST 删除一个或者多个元素 FIRST 是 第一个字符的索引来删除 LAST 是最后字符在最后一个来删除的index 如果last 没有被指定 默认是FIRST +1,
$widget > insert(index,"STRING"); 插入的字符串在 通过Index 之前的字符 index是0 对于第一个字符 end 可以用于最后的字符 #!/usr/local/bin/perl chooseColor: 选择颜色出现一个对话框,让用户选择颜色
过程getOpenFile 和getSaveFile 出现一个对话框 让用户选择一个文件打开或者保存
它的目的是让用户选择一个存在的文件 ,只有用户输入一个非空的文件, 对话框 给用户一个错误提示,需要用户用户给出一个可控选择的 如果应用允许用户创建一个文件 它应该通过提供一个单独的新的menu命令
如果用户输入一个文件 已经存在的, 对话框提示用户确认 当文件存在 是否应该覆盖 一些选项: initialdir=>DIRNAME 指定目录应该被显示的 当对话框弹出 如果参数没有被指定, 目录在当前网络 工作目录是被显示 如果参数指定了一个相对路径,返回值转换相对路径为绝对路径
指定一个字符串会被附加到文件名 如果用户属于一个文件没有扩展名 默认 值是一个空的字符串,意味着没有扩展 会被追加到文件名。 filetypes=>filePatternList
Toplevel 顶层 toplevel 是一个部件 可以用于创建一个自定义的对话框 一个toplevel 类似于一个窗体 除了toplevel是创建为一个top-level 窗体。
主要目的是作为一个容器 用于对话框 和其他部件的容易
Widgets 3 : Radiobutton, Checkbutton
Radiobutton是一个属于 从多个选项中选择其中一个 如果一个选择和另外一个其他的按钮被点击, 最后的选择会丢失它的状态,被点击的按钮会被选择 Widgets 4 : Listbox 列表框部件: 列表框: 一个列表框 是显示一个字符串的列表,一行一个 ,一个新的列表框没有元素
部件: 菜单按钮,菜单,选项按钮 Menubutton 菜单按钮:
一些其他部件 画布,消息,调节器,滚动条 画布: canvas 部件是非常重要的部件, 因为所有的点是在图形绘图区域 画图部件实现了结构化的图形 ,一个画布显示 任何条目的数量, 像是长方形 ,圆形,线条,和文本项目
一个消息框 是一个部件显示一个文本字符 很像 label 部件,但是可以用于制造一个多行文本 合法的选项 指定如何证明文本行必须是left,center或者right 默认是to left 这个选项和anchor 选项一起工作 Adjuster 调节器: 一个调节器 表现为frame 部件 ,一个显著的例外 便捷可以被拖动和扩展 这个部件包含任何数目的窗体, 水平或垂直排列,
Geometry Management : Grid, Pack 部件管理器 Grid 和Pack
grid 命令是用于个grid布局管理器联系在一起, 部署部件按行和列, 被称为 部件master(或者master window) grid 命令可以有几种构成,依赖选项参数: 一些选项: sticky => STYLE 这个选项可以用于安置(或者拉伸) 部件 在他的单元格里 包含了0或者多个字符 n,s,e或者w 每个字母 指向一边(north, south,east, or west) slave会放置 如果n和s 都被指定,slave会延伸来填满整个高度或者宽度 ipadx => AMOUNT 指定水平内部填充的数量 在slave的每一边, 这个空间是被增加在slave的边界
指定垂直内部填充的数量 在slave的每一边,类似于ipadx
在屏幕单元 AMOUNT可以是2个值得列表来指定 填充 对于单独的left和right pady => AMOUNT 指定多少垂直外部填充 来预留top和bottom Some Common Widget Options 一些公用的部件选项: 大写字母必须被任何粗体的字母替换, 检查手册对于所有的选项 确保你是用的部件支持你使用的选项: anchor=>POSITION 安置部件相对的位置:n ne nw s se sw e w 或者center
borderwidth=>WIDTH 边界宽度 选择0 会隐藏边界 command=>SCRIPT 当被调用时 执行脚本 cursor=>CURSOR 鼠标光标显示当鼠标点击这个部件
font=>FONTNAME 前段当部件的状态是nornal
Bind: bind 命令相关的perl代码 ,如果你要做一些事情当用户双击了一个item 在一个列表框或者 当他按了任何按钮, binds 是你需要让绑定一些在下面的例子:
|
请发表评论