宣传一下Wx,其实perl的Wx挺成熟的(为了学Wx最近找了本wxwidgets的书来学,学习后对比给我的感觉),窗口、控件、框架、多线程、wxSocket、剪贴板支持、文档及系统路径处理也有相应模块支持,Wx::HtmlWindow这个模块就更有用了,支持简单的html标签,用于格式化输出很有用,之前曾看到Padre就是用Wxperl开发的。但是就是缺系统的学习资料,但入了门后也不难,而且CPAN上有些模块(一般命名为Wx::Perl::***或wxPerl::**)能让代码更简洁,开发更快速,使用cava packager也很简单就可以转为exe执行程序(另外用pp及wxpar也可以打包Wx代码,为了方便这两个工具打包还有个支持模块Wx::Perl::Packager),最近我就将几个工作常用的代码转为了Wxperl图形界面的exe程序,整体感觉挺好的。
下边这个工具的输出内容的格式就是使用了Wx::HtmlWindow模块。
先创建Wx::Frame、Wx::Panel与Wx::Notebook对象,然后如下使用(就是这么简单):
- $self->{page1} = Wx::HtmlWindow->new( $notebook, -1, wxDefaultPosition );
- $self->{page1}->SetPage(<<EOT);
- <html>
- <body>
- <pre>
- <h5>About</h5>
- ########################################################
- ##Name: RegExp Tool
- ##Version: 1.01
- ##Author: LaiTao(aef25u)
- ##Created: 4/4/2011
- ##Copyright: (c) 2011 LaiTao(aef25u)
- ##QQ: 215113227 Email: laitaot\@163.com
- ##Licence: 版权所有,作者保留追究侵权赔偿责任!
- ########################################################
- <h5>正则替换</h5>
- <b>Usage: </b>replace('String',qr/Pattern/,sub{"Re_Pattern"},g)</br>
- 如:ben@forta.com=~s/(\w+[\w\.]*@[\w\.]+\.\w+)/<A\$1>\$1</A>/g</br>
- 在“正则匹配模式”输入:replace('ben@forta.com',qr/(\w+[\w\.]*@[\w\.]+\.\w+)/,sub{"<A\$1>\$1</A>"},g)</br>
- </pre>
- </body>
- </html>
- EOT
注:要使Wx::HtmlWindow显示 符号<>,在内改写为<>
2011年4月9日,给这个工具加入了注册机制,注册机制是用perl的bless实现的oop写的一个package Cecklicense,实现了一个序列号最多只能在3台电脑上运行1年,这个就不发出来了,只发一下与注册窗口相关代码。如果有看我在CU论坛上发的《》,那下边这个代码的结构应该很容易看懂,只要再加些论坛上的部分代码,应该都能将代码补充完整。
注册窗口代码:
- use Wx::Perl::Dialog;
- package MyFrame;
- ...
- sub new {
- ...
- #检查为非有效用户时,弹出窗口供注册,返回值$reg为'Wx::TextCtrl'的输入内容:
- my $reg= $self->ShowRegister($lic_ID);
- ...
- }
- ### PUT SUBROUTINES HERE ###
- sub ShowRegister {
- my ( $self, $lic_ID ) = @_;
- my $layout = [
- [
- [ 'Wx::StaticText', undef, "ID:", ],
- [
- 'Wx::StaticText', undef, "$lic_ID,请向作者提供此ID号购买SN-KEY",
- ]
- ],
- [
- [ 'Wx::StaticText', undef, '请输入序列号SN-KEY:' ],
- [ 'Wx::TextCtrl', 'LICKEY', "$lic_ID" ],
- ],
- [
- [ 'Wx::Button', 'Ok', Wx::wxID_OK ],
- [ 'Wx::Button', 'Cancel', Wx::wxID_CANCEL ],
- ],
- ];
- my $dialog = Wx::Perl::Dialog->new(
- parent => $self,
- title => 'Register dialog',
- layout => $layout,
- width => [ 150, 400 ],
- );
- return if not $dialog->show_modal;
- my $data = $dialog->get_data;
- $self->{LICKEY} = $data->{LICKEY};
- return $self->{LICKEY};
- }
注册窗口图示:
阅读(2536) | 评论(0) | 转发(0) |