2009-06-24 4 views
5

Python имеет множество графических интерфейсов: tkinter, wxWidgets, pyGTK и т. Д. Но весь этот графический интерфейс должен быть установлен и иметь достаточно тяжелый вес, поэтому довольно сложно развернуть приложения-пиктоны GUI конечного пользователя, которые передают упомянутые библиотеки GUI.Чистая библиотека python gui?

Недавно я подумал о встроенных ctypes python. Теоретически, можно создать чистую библиотеку GUI python, которая будет использовать ctypes в windows (windll.user32.CreateWindowEx и т. Д.), Native pyObjC на MacOS и pyGTK/pyQt на gnome/kde. Существует ли такая библиотека? Если нет, как вы думаете, что не так с идеей?

+1

Tkinter не нужно устанавливать, это часть стандартного распределения python. –

+0

Только на окнах и мако. Его нужно установить на ubuntu и т. Д. – grigoryvp

+0

вы имеете в виду что-то вроде «переписать wx в python»? Почему вы думаете, что это будет лучше, чем то, что уже сделано? – nosklo

ответ

10

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

+1

+1: «совершенно тяжеловес» - преувеличение. В большинстве случаев вам нужно все это для создания графического интерфейса. –

2

Я думаю, что это не изобретать колесо. Это сработает, но зачем вам это делать? Все упомянутые вами библиотеки GUI являются стабильными и более или менее пуленепробиваемыми.

Я мог представить, что есть эксперименты по реализации чистой библиотеки python. Но я его никогда не видел. Все о графических интерфейсах - это тяжелая работа, и в чистой библиотеке питона не будет такой большой аудитории.

3

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

4

Не совсем уверен, что вы подразумеваете под «тяжеловесом».

wx использует собственные элементы управления на каждой платформе и примерно так же прост в использовании на Python, как я могу себе представить; В конце концов, API-интерфейсы графического интерфейса сложны, поскольку графические интерфейсы могут быть сложными.

Я думаю, что wx, для усилий, необходимых для создания окна и качества того, что появляется на экране, отлично. Я не думаю, что вы, скорее всего, будете качать что-то лучше по своему усмотрению.

8

Tkinter является частью стандартного дистрибутива python и устанавливается по умолчанию. Ожидайте найти это на всех установках python, где в первую очередь присутствует графический дисплей.

+1

+1. Если вам нужно больше виджета, есть несколько добавлений и плагинов для TKinter, которые легки и значительно улучшат инструментарий. Но, тем не менее, пользовательский интерфейс является уродливым ... –

+6

Комментарий «ui is ougly» в основном относится только к старым версиям Tkinter. Modern Tk использует собственные виджеты на поддерживающих его платформах. Ужасные приложения Tkinter в наши дни в основном отражают талант программиста, а не ограничения инструментария. Подробнее об этом обсуждении см. Http://stackoverflow.com/questions/349409/why-are-tk-guis-considered-ugly –

+1

Tkinter установлен по умолчанию только для окон и макросов. Его необходимо установить на ubuntu и т. Д. – grigoryvp

5

Понятие «чистая библиотека python gui» неверно, потому что в конечном счете вы будете использовать вызовы системного уровня и виджеты, может быть через ctypes, но это не меняет того факта, что если вы начнете реализовывать свою идею, вы в конечном итоге станете wxPython

5

В принципе, это неправильно, потому что он изобретает колеса, которые уже были сделаны производителями GTK, Tk, Wx, QT и т. Д. Хотя чистый графический интерфейс python является технически осуществимым, и такие проекты, как anygui, пытались что-то подобное, относительно мало этого можно добиться.

Собственные инструментальные средства также помогут улучшить различия между базовыми платформами (собственные диалоги и т. Д.). Это означает, что набор инструментальных средств позволяет вам написать переносное приложение, для которого не требуется какой-либо конкретный код платформы, большая часть которого абстрагируется базовым набором инструментальных средств.

Механизмы распределения, такие как py2exe на окнах и любые методы linux, позволяют связывать библиотеки DLL с приложением, поэтому вы можете сделать установщик, который удаляет любые нативные компоненты, которые ему нужны. Однако на самом деле не существует универсального кросс-платформенного способа сделать это, поэтому вам потребуется поддерживать отдельные установщики для каждой платформы.

10

Начиная с Python 2.7 и 3.1, Tk будет выглядеть намного лучше.

http://docs.python.org/dev/whatsnew/2.7.html#ttk-themed-widgets-for-tk

«Tcl/Tk 8.5 включает в себя набор тематических виджетов, которые повторно реализовать основные виджеты Tk, но имеют более настраиваемый внешний вид и, следовательно, может более близко напоминают виджеты родной платформы. Этот набор виджетов изначально назывался Tile, но был переименован в Ttk (для «themed Tk») при добавлении в Tcl/Tck release 8.5 ».

Смежные вопросы