Кросс-платформенный, не зависящий от языка язык разметки графического интерфейса пользователя?

Раньше я изучал Swing, но теперь я перешел на Python и хочу создавать приложения с графическим интерфейсом. У меня не было времени изучить новый GUI API, поэтому я использовал Jython, но я бы предпочел использовать CPython.

Было бы здорово, если бы у меня была одна простая разметка, позволяющая переключать библиотеки графического интерфейса. Было бы даже лучше, если бы я мог использовать один и тот же язык разметки для разных языков, чтобы я мог быстро создавать графические интерфейсы для любого языка, который я использую. Кто-нибудь знает о такой разметке / библиотеке?

Я видел такие разметки, как Glade и разметка wxWidget (я забыл название). Отчасти это то, что я ищу (создание графического интерфейса без программирования на каком-либо языке), но они связаны с конкретной библиотекой. И ни тот, ни другой не выглядят красиво и не дружелюбны к редактированию человеком.

Ответов (10)

эээ .. HTML? (пытаясь подшутить ... пока ждем настоящих ответов ..)

Если вы переключитесь на .NET, вы можете использовать общий язык графического интерфейса, например Razor в MVC (если вы занимаетесь веб-разработкой), и выбрать C#, VB или ряд других языков.

Библиотека wxWidgets (ранее известная как wxWindows) может быть тем, что вы ищете. Есть особенно хороший порт для Python, wxPython , а также версий для разных языков - на ум приходят C#, C++, Perl и Ruby - и для различных графических интерфейсов: Win32, Mac OS X, GTK +, X11, Motif, WinCE. Библиотека существует некоторое время и довольно солидная.

Не уверен, что это то, что вы ищете, но есть Glade (или загрузка для Windows ), который является дизайнером для GTK +. Он генерирует XML-файл, который затем можно использовать для создания графического интерфейса пользователя на нескольких разных языках.

http://en.wikipedia.org/wiki/Qt_(toolkit)">Qt (его создатели произносят «милый» [1]) - это кроссплатформенная среда разработки приложений, широко используемая для разработки программ с графическим интерфейсом пользователя.

Qt использует C++ с несколькими нестандартными расширениями, реализованными дополнительным препроцессором, который генерирует стандартный код C++ перед компиляцией. Qt также можно использовать в нескольких других языках программирования; привязки существуют для Ada (QtAda) [4], C ** # ** (Qyoto / Kimono) [5], Java (Qt Jambi) [6], Pascal , Perl , PHP (PHP-Qt), Ruby (RubyQt) и Python (PyQt). Он работает на всех основных платформах и имеет обширную поддержку интернационализации. Функции, не связанные с графическим интерфейсом, включают доступ к базе данных SQL, синтаксический анализ XML, управление потоками, поддержку сети и унифицированный кроссплатформенный API для обработки файлов.

Язык пользовательского интерфейса XML . Не знаю много об этом, поэтому не уверен, соответствует ли это вашим желаниям. Поделитесь своим опытом, если поиграете с ним.

Я немного прочитал о языке пользовательского интерфейса XML (XUL), и он выглядит действительно надежным и хорошо поддерживаемым. Основная проблема для меня в том, что он привязан к движку рендеринга Gecko, поэтому он кроссплатформенный, как кроссплатформенные wxWidgets, QT и GTK +. Кроме того, там привязки Python кажутся не такими хорошими, как эти другие библиотеки.

GladeXML и XRC кажутся лучшими разметками

Я серьезно сомневаюсь, что вы найдете язык разметки для GIU, который не привязан к конкретной библиотеке. Чтобы такая вещь существовала, необходим стандартизированный язык разметки графического интерфейса пользователя с несколькими реализациями.

@Cristian и Antony Cramp: хотя XUL - хороший выбор для разработки пользовательского интерфейса (кроссплатформенный, с открытым исходным кодом, используется в Firefox и другом крупном программном обеспечении), он определенно не зависит от языка. Вы привязаны к Gecko, с JS для написания скриптов. Существует экспериментальная поддержка сценариев Python, но она только экспериментальная, AFAIK.

Вы можете определить пользовательский интерфейс в XUL + JS и использовать внутренние компоненты, написанные на C++ (также доступны мосты Python и Java).

Я бы выбрал XSLT, поэтому он может быть встроен и в другие интерфейсы.