返回首页

简介
本文介绍如何使用Perl来编写一个简单的图形用户界面。安装
安装ActiveState的Perl和Tk的最新版本。使用代码
我们首先声明MainWindow的对象和配置对象的属性#创建主窗口。我x_win = MainWindow的-> new()的;美元x_win - >配置(标题=>'测试');美元x_win>"几何体"("200 100")
应用程序分为四个框架:顶部(personInfo),一个在中间(midFrame),并在"载入和保存数据"按钮的底部。 personInfo分为一个fields.my美元personInfo = $ x_win>相框(背景=>"青色")的标签和右框架左框架 - >包(侧=>'顶', 补=>'X');personLeft = $ personInfo>相框(背景=>'青色') - >包(侧=>'左', & #160; 补=>'X');personRight = $ personInfo>相框(背景=>'青色') - >包(侧=>'左',   ; 补=>'X',padx => 20,pady => 20);#标签美元personLeft - >标签(文=>"个人信息",背景=>'青色') - > pack()的;美元personLeft - >标签(文字=>'',-背景=>'青色') - > pack()的;美元personLeft - >标签(文=>'名称',背景=>'青色') - > pack()的;美元personLeft - >标签(文=>'时代",背景=>'青色') - > pack()方法;美元personLeft - >标签(文=>'地址',背景=>'青色') - > pack()方法;美元personLeft - >标签(文=>"占领",背景=>'青色') - > pack()方法;
变量绑定在midFrame帧标签。这意味着#字段的标签控制的变化状态时,该变量被更新以反映新的状态,反之亦然。美元personRight - >标签(全文=>'',-后台=>'青色') - > pack()的;美元personRight - >标签(全文=>'',-后台=>'青色') - > pack()的;美元personRight>项(背景=>'绿色',宽=> 20,边框宽度=> 2, 救济=>"沉船",textvariable自=> \ $ perInfo -> {NAME}) - > pack()的;美元personRight>项(背景=>'绿色',宽=> 20,边框宽度=> 2, 救济=>"沉船",textvariable自=> \ $ perInfo -> {年龄}) - > pack()的;美元personRight>项(背景=>'绿色',宽=> 20,边框宽度=> 2,&# 160; 救济=>"沉船",textvariable自=> \ $ perInfo> {地址}) - > pack()的;美元personRight>项(背景=>'绿色',宽=> 20,边框宽度=> 2, 救济=>"沉船",textvariable自=> \ $ perInfo -> {职业}) - > pack()的;
midFrame是用来把某种分离器之间的"个人信息"和"加载和保存数据"按钮。#分隔栏midFrame = $ x_win>相框(边框宽度=> 3,救灾=>"沟",  0; 的背景=>'紫',) - >包(侧=>'顶');美元midFrame - >标签(宽度=> 100,高度=> 0,前台=>'白',后台=>"紫色") - > pack()方法;#进程框架$ saveFrame = $ x_win>相框(背景=>'青色') - >包(侧=>"顶", & #160; 补=>'X');美元saveFrame>按钮(文本=>"保存数据",命令=> \ saveinfo  0; ) - >网格(QW /行2列0粘nesw /);#进程框架loadFrame = $ x_win>相框(背景=>'青色') - >包(侧=>'顶',   ; 补=>'X');loadFrame ->按钮(文=>'加载数据",命令=> \ loadinfo  0; ) - >网格(QW /行2列0粘nesw /);
MainLoop语句()信号的Tk组件建设的结束,下面的代码将子程序。 loadInfo perInfo哈希状态saveInfo转储,则正好相反。注意perInfo是必然的控制personRight frame.MainLoop();分saveinfo{ 打开(">的test.txt"); 打印出"名称"。 "="。 perInfo -> {NAME}。 "
\ N"; 打印出"年龄"。 "="。美元perInfo -> {年龄}。 "
\ N"; 打印出"地址"。 "="。美元perInfo - > {地址}。 "
\ N"; 打印出的"职业"。 "="。美元perInfo -> {职业}。 "
\ N";  0;关闭(OUT); $文件= $ x_win - > getSaveFile(文件类型=> \ @类型); 开放("> $文件");   ; #打印出"内容类型:文本/ HTML \ N \ N"; 打印出$ perInfo -> {NAME}。 "\ N"; 打印出$ perInfo -> {年龄}。 "\ N"; 打印出$ perInfo -> {地址}。 "\ N"; 打印出$ perInfo -> {职业}。 "\ N";& #160; 关闭(OUT);}分loadinfo{ 我的文件; #类型列在对话框构件 我@类型=(["配置文件","。TXT","文"],   ; ["所有文件","*"]); $文件= $ x_win - > getOpenFile(文件类型=> \ @类型); 打开,文件; 我@ tfile =;  60; 印章@ tfile; 关闭(); perInfo -> {NAME} = $ tfile [0]; 美元perInfo> {年龄} = $ tfile [1]; 美元perInfo - > {地址} = $ tfile [2]; 美元perInfo> {职业} = $ tfile [3];}
本文介绍了安装Perl解释器,并写一个可视化的应用,使用传统知识的基础。我鼓励您探索进一步在网络上,以及尝试一些简单的程序。

回答

评论会员:会员4749791 时间:2011/12/01
我很欣赏你不厌其烦地写了一篇文章,但它会更好,如果你测试的代码你上传

要获得"保存"按钮,出现,改变"载入"按钮列1。

美元saveFrame>按钮(文本=>"保存数据",命令=> \ saveinfo,
) - >网格(QW /行2列0粘nesw /);

美元saveFrame>按钮(文本=>'加载数据",命令=> \ loadinfo,
  ; ) - >网格(QW /行2列0粘nesw /);

成为
美元saveFrame>按钮(文本=>"保存数据",命令=> \ saveinfo,
) - >网格(QW /行2列0粘nesw /);

美元saveFrame>按钮(文本=>'加载数据",命令=> \ loadinfo,
) - >网格(QW /行2列1粘nesw /)

我也注意到,加载数据并没有真正的工作,因为它包含字段名称,但我把它作为一个简单的Tk接口例子,而不是一个简单的Perl应用程序

最后,真的是没有什么好的借口不使用严格;和使用警告,任何Perl代码 - 它确实有助于
评论会员:mattrix007 时间:2011/12/01
我得到以下错误:
!未知的选项问:"高度"的/ usr /的Perl /网站/ lib / Tk的中/ Widget.pm线205
。 在C:\ Documents和Settings \ s138934 \桌面\ test.pl第57行的

第57行需要的样子:

美元midFrame - >标签(高度=> 0,前景=>'白',
后台=>'紫',宽=> 100) - >包()

(也就是说,一个连字符前的高度和宽度之前)

ActiveState Perl的版本,我跑了:

这是v5.8.7 PERL,建MSWin32 - x86的多线程
(14个注册的补丁,请参阅更详细的"输入perl - v)

版权所有1987-2005,Larry Wall的

二进制建立815 [211909] http://www.ActiveState.com ActiveState的
ActiveState的是Sophos的分工。
内置2005年11月2 8时44分52秒
评论会员:GisleVanem 时间:2011/12/01
没有源和没有屏幕截图。
你的文章已收到我的1票。

  ;

Gisle五"如果你觉得偏执狂,并不意味着他们后不!" - 伍迪艾伦