IronPython с Mono является кроссплатформенным - для любых платформ, поддерживаемых Mono, и для набора функций, поддерживаемого Mono (что в значительной степени означает, что Windows Forms поддерживается достаточно хорошо). Однако доступны другие варианты наборов инструментов графического интерфейса пользователя , которые могут обеспечить лучшие «кроссплатформенные» возможности или, по крайней мере, лучшее ощущение на платформах, отличных от Windows.
CPython будет зависеть от выбранного вами графического интерфейса. Лично я обнаружил, что CPython с PyQt является наиболее удобным кроссплатформенным графическим интерфейсом пользователя Python. Он очень мощный, многофункциональный и неплохо работает.
Jython будет работать, но мне лично не очень нравятся параметры графического интерфейса (однако это 100% личное предпочтение).
Я бы сказал, что если кроссплатформенность является целью, забудьте про IronPython. Многие людей ненавидят ад зависимостей, который это вызывает, поэтому будет слишком много работы, чтобы запустить его в некоторых ОС / дистрибутивах. Jython также пострадает от этого, хотя и в меньшей степени.
Java - самая портативная платформа. Jython написан на 100% чистой Java. 'Достаточно.
Кстати, я только что переключил проект CPython / GTK на Jython (пытаясь удалить как можно больше неуправляемого кода), единственная проблема в том, что Jython все еще находится на уровне 2,5, что отстой, когда вы привыкли к 2,6 / 2,7 / 3:)
Уже есть много ответов, но я хотел бы добавить одну важную вещь - независимо от того, какую библиотеку вы изучаете, большинство принципов будут такими же, когда вы перейдете на другая библиотека.
Я не знаю о Qt, но для большинства графических программ (в PyGTK или Tkinter) лучшее, что можно сделать, что касается редактирования, - это использовать изображение PIL (или что-то подобное) для рисования, а затем нарисуйте это изображение на своем виджете холста, иначе вы можете потерять данные пикселей, если ваше окно будет закрыто.
Ну, Mono не поставляется с базой большинства дистрибутивов Linux. Это также не очень легкая зависимость, и я думаю, что Java значительно более вероятна для людей, у которых она уже есть. Планируете ли вы использовать "Winforms" с Mono? Если да, и у вас нет опыта работы с Winforms, почитайте, что говорят другие :-) Другим набором инструментов .NET GUI является WPF, который, к сожалению, Mono не планирует реализовывать.
Jython тоже был бы лучше, потому что вы можете использовать SWT, который отображает родные виджеты и предоставляет множество возможностей компоновки. Или вы можете использовать Jython с Swing, или с чем-нибудь еще - даже с AWT, если вы любите уродство.
Мне очень нравится wxPython (который вы можете использовать с CPython, который по умолчанию стоит в большинстве дистрибутивов), потому что он отображает хорошо выглядящие собственные виджеты в OSX, Windows и Linux (я лично видел только виджеты Gnome). wxPython, безусловно, самый простой в использовании набор инструментов GUI, который я использовал - даже программно (т.е. верстка без Glade или подобного). Я также использовал SWT, который показался мне довольно приятным, Swing, который лично мне не очень нравится, и Winforms, который был кошмаром при попытке сделать даже простые макеты.
Вот краткое сравнение существования интерпретатора/языка выполнения по ОС
Я бы сначала выбрал набор инструментов GUI, так как это очень сильно повлияет на пользовательский опыт и общую сложность (я бы выбрал wxPython, но SWT был бы на втором месте), затем рассмотрел бы вышеупомянутые варианты, возможно, как переломный момент.
Вы можете использовать Python 2.7 или 3.1 (CPython) с ttk (в стандартной библиотеке в 2.7, 3.1), темами поддержки ttk (выглядит красиво и очень простое кодирование)
(1-й экран - текстовый редактор с вкладками и подсветкой синтаксиса) ttk screenshots
Взгляните на сопоставимый графический интерфейс, написанный на python / jython / ironpython. Найдите программы, которые вам нравятся, и узнайте, что они используют. Думаю, большинство, если не все, будет написано на cpython + gtk или cpython + qt. Я думаю, что все инструменты графического интерфейса в Python являются кросс-платформенными.
Примерно год назад я столкнулся с этим же вопросом. После просмотра всех альтернатив я остановился на CPython и PyQt. IMO, Qt / PyQt - безусловно, лучший выбор среди всех наборов инструментов графического интерфейса Python. После обнаружения множества ошибок в wxPython я переключился на PyQt и больше не оглядывался назад. По моему опыту, Qt / PyQt намного надежнее, чем инструменты wx.
Я использую ту же базу кода и создаю автономные исполняемые файлы с PyInstaller для Windows и Py2App для Mac (PyInstaller также может использоваться для Linux). Поскольку эти конструкторы встраивают интерпретатор Python и все зависимости, это избавляет от множества хлопот. Единственная загвоздка в том, что для сборки вам понадобится как Windows, так и Mac. Правильная настройка всех конфигураций тоже может быть сложной задачей, но это возможно и стоит потратить время.