【问题标题】:Language/GUI library to make map editor用于制作地图编辑器的语言/GUI 库
【发布时间】:2010-09-04 23:49:27
【问题描述】:
我正在为我开发的应用程序设计一个跨平台地图编辑器,但我不确定在选择语言/gui 库时应该采取什么方法。只是一些基本信息,编辑器需要解析和输出xml文件。
我最喜欢使用 C++、Lua 和 Perl,但我也愿意使用 Python(可以使用实践)。为了提高工作效率,我更喜欢使用脚本语言。
感谢任何建议,谢谢。
我也想支持填写表格等。
附:我已经测试了扩展现有的地图编辑器,但这并不值得,因为它们没有提供我在基本层面上需要的功能,无论如何我都需要重新编写整个东西。
【问题讨论】:
标签:
c++
python
perl
user-interface
lua
【解决方案1】:
我的偏好始终是Gtk2 和 Perl 5,但这种组合在 Linux 上效果最好。你打算在什么操作系统下运行?
这是一个使用 Gtk2 的 Perl 5 脚本示例:
#!/usr/bin/perl
use strict;
use warnings;
use Gtk2;
Gtk2->init;
my $window = Gtk2::Window->new;
my $vbox = Gtk2::VBox->new;
my $label = Gtk2::Label->new("click the button");
my $button = Gtk2::Button->new("click me");
my $i;
$window->signal_connect(destroy => sub { Gtk2->main_quit });
$button->signal_connect(clicked => sub { $label->set_text(++$i) });
$window->add($vbox);
$vbox->add($label);
$vbox->add($button);
$window->show_all;
Gtk2->main;
【解决方案2】:
我可以推荐使用 Python 和 PyQt 来完成这项工作。 Qt 提供了一个用于场景管理(即分层对象放置、缩放、命中测试、事件、坐标转换等,甚至是碰撞检测)的类,称为 QGraphicsScene 和一个用于显示所有内容的匹配控件,称为 QGraphicsView。它还提供对拖放的支持,从而实现交互式对象放置。
使用这些类实现地图实际上只是创建 QGraphicItems(矩形、多边形等)并将它们添加到场景中,其余的由 Qt 完成。您可以阅读文档,特别是文档“The Graphics View Framework”,了解它们是如何组合在一起的。我最近不得不为客户实现类似的东西,并且对这种方法非常满意。
【讨论】:
-
只是为了完整 - 你也可以使用 Qt 和 Lua,使用 Lqt。它也适用于 Graphics View 框架,并且我经常使用它——我使用 Lqt 创建了一个可视化语言 + 编辑器,因此它可以通过这种方式使用。但是,请注意 Lqt 仍在进行中。
【解决方案3】:
在 Lua 的基础上构建,我会推荐 IUP 用于 GUI。它是轻量级的,可移植到 linux 和 Windows,并与 Lua 很好地集成。对于喜欢 Gtk 的人,IUP 包含 Gtk 的驱动程序,因此原则上可以移植到 Gtk 可以移植的任何系统。
另一个可能的选择是wxWidgets,它还有一个将其与 Lua 集成的包装器。
IUP 和 wxWidgets 都包含在 Lua for Windows 捆绑包中。