perl gui开发方案


初学Perl的人总是想写一个酷酷的GUI程序或者你是一个经验丰富的系统管理员(SA),老板不满意你的命令行脚本,希望能写些快速上手的脚本。不管为了什么,阁下现在可能已经开始在寻觅好用的Perl GUI 工具,因为Perl的哲学就是'There is more than one way to do it',这么多的选择的确会让你产生恐惧感。下面列出Perl常用的 GUI toolkit 和简短评价,大家可以对比选择了。
1、Tk
历史悠久,缺点是界面不够美化,经常有人看了Tk写的界面会问是不是90年代写的。Tk是开放源代码的图形用户界面开发工具,由C语言写成并在娄BSD协议下授权,提供许多常用的图形接口组件(像是菜单、按钮之类),具有跨平台、轻量化等特色,原系Tcl/Tk的子模块;始发于1991年,是以Tcl脚本语言编写的扩展,目前另有Perl、Python、Ruby、Common Lisp等多种移植版本,并可在Linux、Unix、Apple Macintoch、Windows等平台上运行。从Tcl/Tk 8开始,软件搭建的图形界面看起来将“与本地系统一致”。8.5版引入了一个新的主题引擎,在字体渲染方面也有改进。该引擎最初叫Tk Tile,但现在通常被称为"themed Tk"。8.6版则支持了PNG格式,以及倾斜文字。TkDocs中为多种语言提供了较为详细参考,非常值得一看。
在Tk中,运用Tcl脚本编写跨平台图形用户界面框架使用Tcl Shell(Tclsh),以命令package require Tk来调用Tk。在图形操作系统下,Wish提供了包含Tclsh和Tk的图形窗口环境。Tk有以下特性:
1).平台独立:与Tcl一样,Tk也是解释型的;各种平台下的Tcl实现是统一的,因此Tk程序可无需修改地移植至各种平台。
2).可定制:Tcl中几乎所有的特性都是可以修改的,可通过初始化选项或运行时的命令修改。
3).可保存:很多选项出存在数据库中,例如界面的颜色设置;这些选项能保存下来,在再次加载程序时读取。
在Perl中调用Tk用多种方法:Tcl::Tk模块以及Tkx模块均使用Tcl作为桥梁,而Perl/Tk直接使用Perl实现的Tk。Tk提供了多种部件,基本部件集成在toplevel部件里,作为可移动的浮动窗口,通常由操作系统管理。
2、Tkx
它改善Perl/Tk界面不够美化一,更新也较为及时。Tkx模块为Perl提供了另一个Tk接口。Tk是一个绑定到Tcl语言的GUI工具包,Tkx提供了到Tcl的桥梁,允许使用Perl编写基于Tk的应用程序。其背后的主要思想是在Tcl之上的一个非常薄的包装,也就是说得到的正是在Tcl/Tk文档中读到的行为,Perl层为其添加的行为也不奇怪。
3、Tcl/Tk
比Perl/Tk要漂亮一些,可以参看active perl ppm。Tcl::Tk模块提供对Tcl/Tk中的Tk库的访问,通过使用此模块,创建了一个解释器对象,然后可以访问所有已安装的Tcl库(Tk、Tix、BWidgets、BLT等)和现有功能(例如使用tile的本机外观原生小部件)。
4、Gtk2-perl
在这里指的是Gtk2,很符合水床理论:more difficult, because it gives you more control over everything,部分组件的功能多年都未曾完成,在配以gtk2+ for win32的情况下有一定的发展前途,在2018年后逐渐衰落,之前相关的软件站点均已经失联。不过Linux的使用还是正常的,包括gtk3-perl。
5、Qt
看看perl/Qt 最新的update 时间吧,而且在monks中恶评如潮,号称金玉其外,败絮其中(只是指perl/Qt),忘了它吧。
6、WxPerl
按照很多monks的说法,虽然有暂时很多毛病,但仍然强力推荐!尤其它可以在Mac上运行,是一个不可多得的优势。Perl发行版本之Citrus Perl就是一个主要为其提供支持的版本,不过于2017年4月之后似乎停止维护更新了。
7、Win32::GUI
ChinaUnix Perl斑竹fwl强力推荐的Win32下的GUI toolkit,的确好用,加上loft更是如虎添翼。很明显,它只能在windows平台下使用。
8、Prima
国内很少人用,但是却很好用。纯Perl写成,组件丰富,跨平台,Strawberry Perl早期自带,其VB所带出的界面风格跟Delphi界面相似。从2023年开始,其所带预编译版本不能在其下安装成功,源码版本亦是如此。
9、IUP
算是后起之秀,比较新,组件不少,但文档相对较少,值得考虑。
it uses native widgets (= your app will have native look&feel)
it is also slightly cross-platform (Win32, GTK, Motif)
For real cross platform GUI programming I would suggest Prima or Tk. Neither look great, but they work.
示例丰富,易上手程度和Win32::GUI 一样,很多功能看metacpan上的示例就能明白,非常的友好。由于编译Alien::IUP时间较长,建议下载别人编译好的版本,如果同样位于 C:\Strawberry\perl\bin ,那么解压后执行:
dmake install
就可以将IUP与Perl一同配置到机器中。IUP 和 Win32::GUI 模块均是 kmx 这位作者所发布的。
IUP 支持 C、Lua、Perl 等各种语言,其中C与Lua系官方支持。Lua 足够轻便,窗体能够秒出,能够编译合并到exe;而 Perl 写的界面程序,从双击到弹出界面明显迟钝,编译后的二进制程序也比较大且打开速度上比源码版本的又要慢一些。这也出侧面证明了Lua确实为脚本(解释型)语言中效率最高的。
10、FLTK
FLTK is a graphical user interface toolkit for X (UNIX), Windows, OS/X, and several other platforms. FLTK provides modern GUI functionality without the bloat and supports 3D graphics via OpenGL and its built-in GLUT emulation.
看上去确实很轻量,模块及文档较少,写起来可以省不少代码量,与IUP一样通过Alien模块的编译引入。
推荐使用Prima或IUP、Tk,平台支持较好(win32可以通过ppm及cpanm安装),虽然其貌不扬。IUP 学会后可以用 Lua 或 C 来写,跨平台运行;Prima 则是 Strabwerry Perl 自带,且有窗体编辑器,上手很方便。如果一定要用 Perl 写 GUI,推荐 Tk、IUP 和 Prima,两者各有优点。在这些GUI模块中Tk是功能最好,控件最多,也是默认推荐的;Tk的控件可以说是每年都会有更新,更重要的是其帮助及Demo代码也是最多的。
下面是跨平台基于C库的GUI应用开发原文描述
Cross Platform C library for GUI Apps
As a C framework you could use GTK+, it works on Linux, Windows and OS X. And the IUP Toolkit. it is written largely in C, and is also easily bound to Lua.
Another option is Tk, which is a GUI library written in C, it comes with Tcl, a scripting language also written in C. These were designed from the ground up to be embedded in C programs. Nuklear is minimal state immediate mode graphical user interface toolkit written in ANSI C and licensed under public domain.
2023年12月,在Sanko Robinson的Metacpan页面发现诸多的可视桌面框架的链接():
Alien::CSFML
FLTK(FI)
SDL2-FFI
Alien::SDL3
LibUI
这些模块在2020年后均在更新,虽然多数在Strawberry-Perl-5.32上不能安装;其中当数LibUI这个新兴的C++ GUI框架。
LibUI是一个简单且可移植(但并非不灵活)的C语言GUI库,它使用它所支持的相应平台的本机GUI技术,编译过程需要使用meson与ninja这两个工具。Windows下需要在xp-sp2之后的版本,Linux下需要 gtk-v3.10的开发环境,OS-x 10.8之上的环境。
pEFL
Perl的Enlightenment Foundation Libraries的开发支持环境,Enlightenment桌面环境的衍生库。
参考来源:
Perl GUI FAQ
Perl GUI toolkit的选择
List_of_widget_toolkits
Perl GUI programming on Windows
What are good interactive GUI builder packages for Perl
1、Tk
历史悠久,缺点是界面不够美化,经常有人看了Tk写的界面会问是不是90年代写的。Tk是开放源代码的图形用户界面开发工具,由C语言写成并在娄BSD协议下授权,提供许多常用的图形接口组件(像是菜单、按钮之类),具有跨平台、轻量化等特色,原系Tcl/Tk的子模块;始发于1991年,是以Tcl脚本语言编写的扩展,目前另有Perl、Python、Ruby、Common Lisp等多种移植版本,并可在Linux、Unix、Apple Macintoch、Windows等平台上运行。从Tcl/Tk 8开始,软件搭建的图形界面看起来将“与本地系统一致”。8.5版引入了一个新的主题引擎,在字体渲染方面也有改进。该引擎最初叫Tk Tile,但现在通常被称为"themed Tk"。8.6版则支持了PNG格式,以及倾斜文字。TkDocs中为多种语言提供了较为详细参考,非常值得一看。
在Tk中,运用Tcl脚本编写跨平台图形用户界面框架使用Tcl Shell(Tclsh),以命令package require Tk来调用Tk。在图形操作系统下,Wish提供了包含Tclsh和Tk的图形窗口环境。Tk有以下特性:
1).平台独立:与Tcl一样,Tk也是解释型的;各种平台下的Tcl实现是统一的,因此Tk程序可无需修改地移植至各种平台。
2).可定制:Tcl中几乎所有的特性都是可以修改的,可通过初始化选项或运行时的命令修改。
3).可保存:很多选项出存在数据库中,例如界面的颜色设置;这些选项能保存下来,在再次加载程序时读取。
在Perl中调用Tk用多种方法:Tcl::Tk模块以及Tkx模块均使用Tcl作为桥梁,而Perl/Tk直接使用Perl实现的Tk。Tk提供了多种部件,基本部件集成在toplevel部件里,作为可移动的浮动窗口,通常由操作系统管理。
2、Tkx
它改善Perl/Tk界面不够美化一,更新也较为及时。Tkx模块为Perl提供了另一个Tk接口。Tk是一个绑定到Tcl语言的GUI工具包,Tkx提供了到Tcl的桥梁,允许使用Perl编写基于Tk的应用程序。其背后的主要思想是在Tcl之上的一个非常薄的包装,也就是说得到的正是在Tcl/Tk文档中读到的行为,Perl层为其添加的行为也不奇怪。
3、Tcl/Tk
比Perl/Tk要漂亮一些,可以参看active perl ppm。Tcl::Tk模块提供对Tcl/Tk中的Tk库的访问,通过使用此模块,创建了一个解释器对象,然后可以访问所有已安装的Tcl库(Tk、Tix、BWidgets、BLT等)和现有功能(例如使用tile的本机外观原生小部件)。
4、Gtk2-perl
在这里指的是Gtk2,很符合水床理论:more difficult, because it gives you more control over everything,部分组件的功能多年都未曾完成,在配以gtk2+ for win32的情况下有一定的发展前途,在2018年后逐渐衰落,之前相关的软件站点均已经失联。不过Linux的使用还是正常的,包括gtk3-perl。
5、Qt
看看perl/Qt 最新的update 时间吧,而且在monks中恶评如潮,号称金玉其外,败絮其中(只是指perl/Qt),忘了它吧。
6、WxPerl
按照很多monks的说法,虽然有暂时很多毛病,但仍然强力推荐!尤其它可以在Mac上运行,是一个不可多得的优势。Perl发行版本之Citrus Perl就是一个主要为其提供支持的版本,不过于2017年4月之后似乎停止维护更新了。
7、Win32::GUI
ChinaUnix Perl斑竹fwl强力推荐的Win32下的GUI toolkit,的确好用,加上loft更是如虎添翼。很明显,它只能在windows平台下使用。
8、Prima
国内很少人用,但是却很好用。纯Perl写成,组件丰富,跨平台,Strawberry Perl早期自带,其VB所带出的界面风格跟Delphi界面相似。从2023年开始,其所带预编译版本不能在其下安装成功,源码版本亦是如此。
9、IUP
算是后起之秀,比较新,组件不少,但文档相对较少,值得考虑。
it uses native widgets (= your app will have native look&feel)
it is also slightly cross-platform (Win32, GTK, Motif)
For real cross platform GUI programming I would suggest Prima or Tk. Neither look great, but they work.
示例丰富,易上手程度和Win32::GUI 一样,很多功能看metacpan上的示例就能明白,非常的友好。由于编译Alien::IUP时间较长,建议下载别人编译好的版本,如果同样位于 C:\Strawberry\perl\bin ,那么解压后执行:
dmake install
就可以将IUP与Perl一同配置到机器中。IUP 和 Win32::GUI 模块均是 kmx 这位作者所发布的。
IUP 支持 C、Lua、Perl 等各种语言,其中C与Lua系官方支持。Lua 足够轻便,窗体能够秒出,能够编译合并到exe;而 Perl 写的界面程序,从双击到弹出界面明显迟钝,编译后的二进制程序也比较大且打开速度上比源码版本的又要慢一些。这也出侧面证明了Lua确实为脚本(解释型)语言中效率最高的。
10、FLTK
FLTK is a graphical user interface toolkit for X (UNIX), Windows, OS/X, and several other platforms. FLTK provides modern GUI functionality without the bloat and supports 3D graphics via OpenGL and its built-in GLUT emulation.
看上去确实很轻量,模块及文档较少,写起来可以省不少代码量,与IUP一样通过Alien模块的编译引入。
推荐使用Prima或IUP、Tk,平台支持较好(win32可以通过ppm及cpanm安装),虽然其貌不扬。IUP 学会后可以用 Lua 或 C 来写,跨平台运行;Prima 则是 Strabwerry Perl 自带,且有窗体编辑器,上手很方便。如果一定要用 Perl 写 GUI,推荐 Tk、IUP 和 Prima,两者各有优点。在这些GUI模块中Tk是功能最好,控件最多,也是默认推荐的;Tk的控件可以说是每年都会有更新,更重要的是其帮助及Demo代码也是最多的。
下面是跨平台基于C库的GUI应用开发原文描述
Cross Platform C library for GUI Apps
As a C framework you could use GTK+, it works on Linux, Windows and OS X. And the IUP Toolkit. it is written largely in C, and is also easily bound to Lua.
Another option is Tk, which is a GUI library written in C, it comes with Tcl, a scripting language also written in C. These were designed from the ground up to be embedded in C programs. Nuklear is minimal state immediate mode graphical user interface toolkit written in ANSI C and licensed under public domain.
2023年12月,在Sanko Robinson的Metacpan页面发现诸多的可视桌面框架的链接():
Alien::CSFML
FLTK(FI)
SDL2-FFI
Alien::SDL3
LibUI
这些模块在2020年后均在更新,虽然多数在Strawberry-Perl-5.32上不能安装;其中当数LibUI这个新兴的C++ GUI框架。
LibUI是一个简单且可移植(但并非不灵活)的C语言GUI库,它使用它所支持的相应平台的本机GUI技术,编译过程需要使用meson与ninja这两个工具。Windows下需要在xp-sp2之后的版本,Linux下需要 gtk-v3.10的开发环境,OS-x 10.8之上的环境。
pEFL
Perl的Enlightenment Foundation Libraries的开发支持环境,Enlightenment桌面环境的衍生库。
参考来源:
Perl GUI FAQ
Perl GUI toolkit的选择
List_of_widget_toolkits
Perl GUI programming on Windows
What are good interactive GUI builder packages for Perl
该文章最后由 阿炯 于 2024-01-06 11:32:02 更新,目前是第 2 版。