Простой вопрос:
Я не ищу здесь религиозной войны, я просто хочу хорошо разобраться со всем, что существует в терминах API-интерфейсов Python GUI.






Однако вы упустили из виду «преимущества любого данного API». Страница, на которую вы ссылаетесь, дает только описание каждого API.
PyQt превосходен, если у вас есть опыт или интерес к Qt.
Большинство API-интерфейсов графического интерфейса пользователя Python будут оболочками для наиболее распространенных API-интерфейсов графического интерфейса c / C++. У вас есть оболочка python для gtk, оболочка python для qt, оболочка python для .NET и т. д. И т. Д.
Так что на самом деле это зависит от ваших потребностей. Если вы ищете самый простой способ рисовать нативно выглядящие виджеты в Linux, Mac и Windows, тогда используйте wxPython (оболочка python для виджетов WX). Если кроссплатформенность вам не нужна, другие библиотеки могут оказаться более полезными.
Мне нравится wxPython или Tk.
Tk поставляется со стандартным дистрибутивом Python, поэтому вам не нужно ничего устанавливать.
wxPython (wxWigets) кажется намного более мощным и выглядит намного лучше. Он также хорошо работает кросс-платформенным (хотя и не идеально, потому что он использует различные базовые графические API-интерфейсы для типов систем различий).
Вместо того, чтобы опубликовать список ваших вариантов, я выскажу свое скромное мнение:
Я влюблен в wxPython.
Я использовал Qt в C++ и Tk еще во времена Tcl, но что действительно заставляет меня полюбить wxPython, так это демонстрация, которую вы получаете с ним. В демонстрации вы можете просматривать все различные фреймы виджетов и т. д., Которые являются частью фреймворка, видеть исходный код и фактически видеть, как он выглядит во время работы.
У меня были проблемы с сборкой и установкой версии для Linux, но теперь, когда она у меня есть, я использую ее все время. Я использовал wxPython для небольших приложений анализа данных, и я написал несколько внутренних инструментов, связанных со сравнением результатов тестов, объединением исходного кода и т. д.
Я давно нашел эту ссылку: http://www.awaretek.com/toolkits.html. Он предлагает выбор на основе ваших критериев. Для меня он всегда предлагает wxPython. В любом случае он дает вам множество оценок по различным инструментам. То, что подходит мне, может не подходить вам. Но он показывает, как все взятые единицы были оценены в соответствии с вашими критериями, поэтому, если вам по какой-то причине не нравится лучший набор инструментов, вы можете увидеть, какие из них наиболее близки к вашим критериям.
QT / GTK / WxWidgets (ранее wxWindows) кажутся одними из наиболее зрелых кроссплатформенных инструментов GUI. Единственная проблема заключается в том, что ни один из них не устанавливается при установке Python по умолчанию, поэтому вам, возможно, придется скомпилировать библиотеки. Если вам нужно что-то, что просто запускается без установки, тогда используйте TKInter, потому что, как уже упоминалось, он устанавливается по умолчанию с Python.
В любом случае мои критерии были 9 по простоте использования, 10 по зрелости документации / виджетов, 10 по установленной базе, 5 по генераторам кода графического интерфейса, 10 по собственному внешнему виду для окон / Linux и 1 и 5 для последних двух, я Я не очень разбираюсь в Mac OSX (даже если здесь 10, это означает wxpython).
Я покопался в коде этой страницы, и это не имеет смысла. Почти невозможно превзойти wxPython в чем-либо, кроме случаев, когда все, что вас волнует, - это простота обучения или работы на КПК. Он даже выберет wxPython вместо Tkinter, если все, что вам нужно, это установленная база - а Tkinter поставляется с Python!
Вы правы, у него странный метод подсчета очков. Хотя установленная база тоже пользуется популярностью, поэтому по этому трудно сказать. По популярности я, кажется, больше вижу людей, увлеченных Qt / GTK, а также Wx, чем tkinter. Но на установленной базе вы не можете победить
PythonCard действительно прост в использовании. Вот что я бы порекомендовал.
Вот их рецензия:
PythonCard is a GUI construction kit for building cross-platform desktop applications on Windows, Mac OS X, and Linux, using the Python language.
The PythonCard motto is "Simple things should be simple and complex things should be possible."
PythonCard is for you if you want to develop graphical applications quickly and easily with a minimum of effort and coding. Apple's HyperCard is one of our inspirations; simple, yet powerful.
PythonCard uses wxPython. If you are already familiar with wxPython, just think of PythonCard as a simpler way of doing wxPython programs with a whole lot of samples and tools already in place for you to copy and subclass and tools to help you build cross-platform applications.
PythonCard было очень просто настроить и запустить. Но инструменты с графическим интерфейсом, которые идут вместе с ним, немного неуклюжи.
Я работаю с wxPython уже несколько лет, и мне он очень нравится. Лучшее в wxPython заключается в том, что пользовательский интерфейс кажется родным для разных платформ, на которых он работает (отлично подходит для Windows и Linux, но не так хорошо для OS / X).
API не хватает согласованности, но к этому быстро привыкаешь.
Вы можете проверить Testuff (бесстыдный плагин, поскольку это мой собственный продукт), чтобы понять, что можно сделать с помощью wxPython (хотя, я должен сказать, с довольно небольшими усилиями).
Я использовал Tkinter и wxPython. Tkinter довольно прост и не использует собственных виджетов. Это означает, что приложения Tkinter будут выглядеть одинаково на любой платформе - это может показаться привлекательным, но на практике это означает, что они выглядят некрасиво на любой платформе: - / Тем не менее, им довольно легко пользоваться. Я нашел Мышление в Ткинтере очень полезным, когда я учился, потому что я никогда раньше не занимался программированием графического интерфейса. Однако, если такие вещи, как фреймы и алгоритмы компоновки, кнопки и привязки, вам знакомы, вы можете пропустить этот шаг.
Вы можете дополнить Tkinter с помощью Tix (но имейте в виду, что Tix плохо работает с py2exe). Также ознакомьтесь с Python Megawidgets, который создает более сложные элементы управления с использованием основ Tkinter.
Наконец, Tkinter прекрасно работает с оболочкой: вы можете запустить интерпретатор, сделать такие вещи, как 'import tkinter' 'tk = tkinter.Tk ()' и т. д., И создать свой графический интерфейс в интерактивном режиме (и он будет отзывчивым). (Я думаю, что это не сработает, если вы используете IDLE)
wxPython выглядит намного лучше и поставляется с гораздо большим набором элементов управления. Он кроссплатформенный (хотя на моем Mac он кажется немного привередливым) и использует собственные элементы управления на каждой платформе. Хотя это немного сбивает с толку. Он также поставляется с демонстрационным приложением, которое демонстрирует большинство своих функций и предоставляет вам испытательный стенд для экспериментов. Некоторые конкретные мысли о wxPython:
Если вы правильно обернете Tkinter, вы все равно сможете создавать графические интерфейсы в интерактивном режиме с помощью IDLE.
EasyGUI is different from other GUIs in that EasyGUI is NOT event-driven. It allows you to program in a traditional linear fashion, and to put up dialogs for simple input and output when you need to. If you have not yet learned the event-driven paradigm for GUI programming, EasyGUI will allow you to be productive with very basic tasks immediately. Later, if you wish to make the transition to an event-driven GUI paradigm, you can do so with a more powerful GUI package such as anygui, PythonCard, Tkinter, wxPython, etc.
Я предпочитаю PyGTK, потому что я парень GNOME. Мне кажется, что использование PyGTK очень питонично. Организация кода кажется последовательной, документация чистая и исчерпывающая, и к этому очень легко привыкнуть (за исключением, может быть, Treeviews).
Я также становлюсь большим поклонником PyGTK, потому что он так легко складывается и выглядит так профессионально. Единственное, что мне не нравится, это подчеркивание в именах методов: set_title ("Title") мне кажется неуклюжим. Но он хорошо организован, там огромная куча документации, и интерфейс выглядит великолепно.
Полагаю, каждому свое. Я предпочитаю соглашение об именах в стиле подчеркивания и считаю, что camel-case (fooBarBaz) довольно уродлив. Не то чтобы это действительно важно. ГТК молодец! :)
wxPython, и я предполагаю, что PyGTK также может использовать wxGlade, чтобы помочь вам разработать большинство пользовательских интерфейсов, которые вы создадите. Это большой плюс. Вам не нужно учиться вручную программировать графический интерфейс, пока вы не будете готовы. Я сделал несколько программ с графическим интерфейсом прямо из wxGlade, прежде чем я достаточно освоился с тем, как работает wxPython, чтобы попробовать ручное кодирование.
PyQt имеет аналогичное устройство графической компоновки, но мне никогда не удавалось правильно компилировать PyQt. Также не хватало руководств и документации, показывающих, как создать окончательный код Python; многие из найденных мной документов относятся к версии Qt для C++.
Tkinter хорош для быстрых и грязных программ, но реально, если вы используете wxGlade, может быть быстрее создать программу с wxPython. Как минимум, вы можете использовать wxGlade для визуального представления программы клиенту, вместо того, чтобы тратить время на ручное программирование «фиктивной» программы.
Для PyGTK вы используете только Glade, а не wxGlade.
Простого в использовании создателя графического интерфейса для Python не существует. Это действительно удивительно, учитывая, что у небольших языков сценариев, таких как AutoIt и AutoHotkey, есть отличные и очень простые в использовании средства создания графического интерфейса. Да ладно, последователи Python, не могли бы вы сделать лучше?
У WX есть проблемы на Mac.
Я заглянул сюда, так как хочу получить управляемый событиями GUI API, чтобы делать некоторые вещи на Python. У меня wx установлен на моем Mac как часть MatPlotLib, но он не работает должным образом. Он не втягивается в клавиатуру. Я устанавливал это три раза в трех разных операционных системах Mac, и хотя он работал в первый раз, в два других раза у меня возникала эта проблема.
Эту версию я использую с дистрибутивом Enthought, поэтому установка не требуется. Когда я установил его отдельно, было так много зависимых установок, что это была пробная установка.
Из того, что я прочитал здесь, я попробую Tkinter, так как он должен быть простым и кроссплатформенным, но я подумал, что просто поделюсь с вами вышеизложенным. Мне нравится Mac OS по ряду разных причин, но инструменты Python намного проще установить в Windows (и, возможно, в других Linux). Я просто подумал, что расскажу здесь о Mac.
Существуют специфичные для python gui-api, такие как kivy (преемник или pymt), pygui (на основе pyrex), pyui и nufox, которые не сравниваются с более надежными инструментами, такими как wxpython, pyqt, pygtk и tkinter.
Это просто дополнительные необязательные инструменты.
Единственное, что в них уникально, так это то, что это api для python, точно так же, как есть prima (api для perl) и обувь (api для ruby). Это помогает нам понять, что когда tk является портом api на основе tcl (а другие основаны на c и C++), то эти api специально созданы для соответствующих трех языков сценариев.
Из них kivy является наиболее надежным, тогда как кодирование pygui упоминается как очень похожее на python, pyui наименее надежно, но стоит попробовать, и все они должны быть переносимы везде, где идет Python или приложение на основе python.
Затем есть jpype, который представляет собой набор инструментов, который можно использовать с jython и pydev, и который на самом деле является java japi, настроенным под python / jython-interface.