9

我正在考虑为数字硬件设计制作某种实验性 IDE。所以我无法决定选择女巫平台。

我将拥有带有语法突出显示的文本编辑器、一些矢量图形和许多选项卡式窗口。

我的目标: 1. 使用尽可能少的自定义组件来制作 GUI。2. 使其尽可能跨平台

(我已经知道 CPython 和 Jython 是跨平台友好的,但是 IronPython+Mono 呢?)

所以 - 问题是关于 GUI - 我应该选择什么?

4

8 回答 8

9

带有 Mono 的 IronPython是跨平台的 - 对于 Mono 支持的任何平台,以及 Mono 支持的功能集(这几乎意味着 Windows 窗体得到了很好的支持)。然而,GUI 工具包的其他选项可用,它们可能提供更好的“跨平台”功能,或者至少在非 Windows 平台上提供更好的感觉。

CPython 将取决于您选择的 GUI 套件。就个人而言,我发现带有 PyQt的 CPython 是 Python 中最有用的跨平台 GUI 选项。它非常强大,功能丰富,并且运行良好。

Jython 可以,但我个人不太喜欢 GUI 选项(不过,这是 100% 的个人偏好)。

于 2010-07-26T18:22:23.513 回答
5

我想说如果跨平台是一个目标,那就忘记 IronPython。很多讨厌它导致的依赖地狱,因此要让它在某些操作系统/发行版中运行会做太多的工作。Jython 也会遭受这种情况,尽管程度较轻。

于 2010-07-26T18:22:39.910 回答
5

好吧,Mono 没有附带大多数 Linux 发行版的基础。它也不是一个非常轻量级的依赖项,而且我认为人们更有可能已经拥有 Java。你打算在 Mono 中使用“Winforms”吗?如果是这样,并且您没有使用 Winforms 的经验,请阅读其他人的看法 :-) 另一个 .NET GUI 工具包是 WPF,不幸的是 Mono 没有计划实施。

Jython 也会更好,因为您可以使用 SWT,它呈现本地小部件并轻松提供许多布局可能性。或者,您可以将 Jython 与 Swing 或其他任何东西一起使用——如果您喜欢丑陋,甚至可以使用 AWT。

我真的很喜欢 wxPython(您可以将其与 CPython 一起使用,默认情况下在大多数发行版上),因为它可以在 OSX、Windows 和 Linux 中呈现好看的本机小部件(我只亲眼见过 Gnome 小部件)。wxPython 是迄今为止我用过的最容易使用的 GUI 工具包——甚至是编程方式(即没有 Glade 或类似的布局)。我还使用过 SWT,我觉得它很不错,还有 Swing,我个人不太喜欢它的外观,还有 Winforms,即使是简单的布局也是一场噩梦。

这是 OS 存在的解释器/语言运行时的快速比较

  • CPython
    • Windows - 可能未安装,您必须使用非 python 安装程序安装它:-P
    • Linux - 可能已安装(Ubuntu、Gentoo 和 RedHat 都有用 Python 编写并在 CPython 上运行的系统工具)
    • Mac - 预装在 OSX 上
  • 杰通
    • Windows - 根据我的经验,可能是在某个时候安装的,尽管它没有附带
    • Linux - 可能已安装,但更重要的是,没有人会因为像 Mono 那样依赖它而讨厌你
    • Mac - 预装在 OSX 上(“Mac OS X Leopard 预装了 J2SE 5.0,基于 JDK 1.5.0_13_b05”——Apple 的网站)
  • 铁蟒
    • Windows - 可能会运行良好,因为我敢打赌,如果大多数人拥有最新版本的 Windows,他们至少拥有 .NET 2.0
    • Linux - 可能没有安装 - 我在 Linux 上使用 Mono 的唯一应用程序是 Rasterbator,它运行良好,但我觉得将 .NET 放在 Linux 上很奇怪
    • Mac - 见上文

我会首先选择一个 GUI 工具包,因为这会极大地影响用户体验和整体难度(我会选择 wxPython,但 SWT 将紧随其后)然后考虑上述以及可能作为决胜局。

于 2010-07-26T18:32:04.063 回答
3

大约一年前,我遇到了同样的问题。在查看了所有替代方案后,我最终选择了 CPython 和 PyQt。IMO,Qt/PyQt 是迄今为止所有 Python GUI 工具包中的最佳选择。在 wxPython 中遇到许多错误后,我切换到 PyQt 并且再也没有回头。根据我的经验,Qt/PyQt 比 wx 工具包更可靠。

我使用完全相同的代码库,并使用适用于 Windows的PyInstaller和适用于 Mac 的Py2App构建独立的可执行文件(PyInstaller 也可用于 Linux)。因为这些构建器嵌入了 Python 解释器和所有依赖项,所以可以省去很多麻烦。唯一的问题是您需要 Windows 和 Mac 来进行构建。使所有配置正确也可能很痛苦,但这是可能的,而且值得投入时间。

于 2010-07-26T18:34:13.737 回答
2

看看用 python/jython/ironpython 编写的类似 GUI。寻找您喜欢的程序并找出它们使用的程序。我猜大多数(如果不是全部)都会用 cpython + gtk 或 cpython + qt 编写。我认为python中的所有gui工具包都是跨平台的。

于 2010-07-26T18:25:33.787 回答
2

Java最便携的平台。Jython 是用 100% 纯 Java 编写的。'纳夫说。

顺便说一句,我刚刚将一个 CPython/GTK 项目切换到 Jython(试图删除尽可能多的非托管代码),唯一的问题是 Jython 仍然是 2.5,当你习惯了 2.6/2.7/3 时,这很糟糕: )

于 2010-07-27T06:51:46.683 回答
1

您可以将 Python 2.7 或 3.1 (CPython) 与ttk(在 2.7、3.1 的标准库中)一起使用,ttk 支持主题(看起来不错且编码非常简单)

(第一个屏幕是带有标签和语法突出显示的文本编辑器) ttk screenshots

于 2010-07-26T19:59:47.803 回答
1

已经有很多答案了,但我想补充一件重要的事情——不管你学的是哪个图书馆,当你搬到另一个图书馆时,大部分原则都是一样的。

我不了解 Qt,但对于大多数图形程序(在 PyGTK 或 Tkinter 中)来说,就编辑而言,最好的办法是使用 PIL 图像(或类似的东西)来绘制然后绘制该图像在您的画布小部件上,否则如果您的窗口被覆盖,您可能会丢失像素数据。

于 2010-07-26T18:33:20.967 回答