Какие API-интерфейсы Python GUI существуют?[закрыто]

StackOverflow https://stackoverflow.com/questions/93930

  •  01-07-2019
  •  | 
  •  

Вопрос

Простой вопрос:

  • Какие API-интерфейсы Python GUI существуют и каковы преимущества того или иного API?

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

Это было полезно?

Другие советы

Я использовал Tkinter и wxPython.Tkinter довольно прост и не использует собственные виджеты.Это означает, что приложения Tkinter будут выглядеть одинаково на любой платформе — это может показаться привлекательным, но на практике это означает, что они выглядят некрасиво на любой платформе :-/ Тем не менее, его довольно легко использовать.я нашел Думая в Ткинтере очень помогло, когда я учился, потому что я никогда раньше не занимался программированием графического интерфейса.Однако если такие вещи, как фреймы, алгоритмы макета, кнопки и привязки, вам знакомы, вы можете пропустить этот шаг.

Вы можете дополнить Tkinter с помощью Tix (но будьте осторожны: Tix плохо работает с py2exe).Также ознакомьтесь с Python Megawidgets, который создает более продвинутые элементы управления с использованием основ Tkinter.

Наконец, Tkinter хорошо работает с оболочкой:вы можете запустить интерпретатор, выполнить такие действия, как «import tkinter» «tk = tkinter.Tk()» и т. д.и создавайте свой графический интерфейс в интерактивном режиме (и он будет отзывчивым).(Я думаю, что это не сработает, если вы используете IDLE)

wxPython выглядит намного лучше и имеет гораздо больший набор элементов управления.Он кроссплатформенный (хотя на моем Mac он кажется немного привередливым) и использует встроенные элементы управления на каждой платформе.Однако это немного сбивает с толку.Он также поставляется с демонстрационным приложением, которое демонстрирует большинство его функций и предоставляет вам испытательный стенд для экспериментов.Некоторые конкретные мысли о wxPython:

  • Существует три (?) разных способа размещения виджетов.Проигнорируйте два из них;просто используйте Sizers.И даже в этом случае вы можете создать практически любой макет, используя только BoxSizer и GridBagSizer.
  • Все виджеты wx имеют идентификаторы.Вам не нужно заботиться о том, какие идентификаторы есть, но раньше (я думаю) вам нужно было это знать, поэтому некоторый старый код будет завален явными присвоениями идентификаторов.И в большинстве демонстрационных кодов параметр ID везде будет иметь -1 (несмотря на то, что все методы имеют ID в качестве параметра ключевого слова, который в любом случае по умолчанию равен -1).
  • Убедитесь, что у вас есть стандартная документация wxWidgets, а также демо-версия wxPython — они вам нужны обе.
  • Если вы хотите использовать wxPython с py2exe и хотите, чтобы он хорошо выглядел в Windows XP, вам нужно немного поработать с файлом setup.py.Видеть здесь

PyQt отлично подходит, если у вас есть опыт или интерес к Qt.

http://www.riverbankcomputing.co.uk/software/pyqt/intro

Большинство API-интерфейсов графического интерфейса Python будут оболочками наиболее распространенных API-интерфейсов графического интерфейса c/C++.У вас есть оболочка Python для gtk, оболочка Python для qt, оболочка Python для .NET и т. д. и т. п.

Так что на самом деле это зависит от ваших потребностей.Если вы ищете самый простой способ рисовать виджеты, выглядящие естественно, в Linux, Mac и Windows, воспользуйтесь wxPython (оболочкой Python для виджетов WX).Если кроссплатформенность не входит в число ваших потребностей, другие библиотеки могут оказаться более полезными.

Вместо того, чтобы публиковать список ваших вариантов, я выскажу свое скромное мнение:

Я влюблен в wxPython.

Я использовал Qt в C++ и Tk еще во времена Tcl, но что действительно делает меня похожим на wxPython, так это демо-версия, которую вы получаете с ним.В демо-версии вы можете просмотреть все различные рамки виджетов и т. д., которые являются частью платформы, увидеть исходный код и фактически увидеть, как он выглядит во время работы.

У меня были некоторые проблемы со сборкой и установкой версии Linux, но теперь, когда она у меня есть, я использую ее постоянно.Я использовал wxPython для небольших приложений по анализу данных и написал несколько внутренних инструментов, связанных со сравнением результатов тестов, объединением исходного кода и т. д.

Эту ссылку я нашел давно: http://www.awaretek.com/toolkits.html.Он предлагает принять решение на основе ваших критериев.Для меня это все время предполагает wxPython.В любом случае, это дает вам кучу оценок по различным наборам инструментов.То, что подходит мне, может не подходить вам.Но он дает вам информацию о том, как все инструменты были оценены в соответствии с вашими критериями, поэтому, если вам по какой-то причине не нравится лучший набор инструментов, вы можете увидеть, какие из них наиболее близки к вашим критериям.

QT/GTK/WxWidgets (ранее wxWindows), по-видимому, являются одними из наиболее зрелых кроссплатформенных наборов инструментов для графического пользовательского интерфейса.Единственная проблема заключается в том, что ни одна из них не устанавливается при установке Python по умолчанию, поэтому вам, возможно, придется скомпилировать библиотеки.Если вам нужно что-то, не требующее установки и просто запускающееся, используйте TKInter, потому что, как уже упоминалось, он устанавливается по умолчанию вместе с Python.

В любом случае, моими критериями были 9 по простоте использования, 10 по зрелости документации/виджетов, 10 по установленной базе, 5 по генераторам кода графического интерфейса, 10 по собственному внешнему виду для Windows/Linux и 1 и 5 за последние два, я Я не разбираюсь в Mac OSX (даже с 10 здесь подразумевается wxpython).

PythonCard действительно прост в использовании.Это то, что я бы порекомендовал.

Вот их запись:

Pythoncard-это строительный комплект GUI для строительства кроссплатформенных настольных приложений в Windows, Mac OS X и Linux, используя язык Python.

Девиз Pythoncard - это «простые вещи должны быть простыми, а сложные вещи должны быть возможны».

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

PythonCard использует wxPython.Если вы уже знакомы с Wxpython, просто подумайте о Pythoncard как о более простом способе выполнения программ wxpython с множеством образцов и инструментов, которые уже используются для копирования и подкласса и инструментов, которые помогут вам создать кросс-платформенные приложения.

EasyGUI отличается от других графических интерфейсов тем, что EasyGUI НЕ управляется событиями.Он позволяет вам программировать традиционным линейным способом и при необходимости создавать диалоговые окна для простого ввода и вывода.Если вы еще не изучили событийно-ориентированную парадигму программирования с графическим интерфейсом пользователя, EasyGUI позволит вам сразу же продуктивно выполнять самые простые задачи.Позже, если вы захотите перейти к парадигме графического интерфейса, управляемого событиями, вы можете сделать это с помощью более мощного пакета графического интерфейса, такого как Anygui, PythonCard, Tkinter, wxPython и т. д.

Веб-сайт EasyGui

У WX проблемы на Mac.

Я посмотрел здесь, так как хочу получить API-интерфейс GUI, управляемый событиями, для выполнения некоторых задач на Python.У меня на Mac установлен wx как часть MatPlotLib, но он работает неправильно.Он не принимает ввод с клавиатуры.Я устанавливал это три раза в трех разных операционных системах Mac, и хотя в первый раз это сработало, в двух других случаях у меня возникла эта проблема.

Эту версию я использую вместе с дистрибутивом En Thought, поэтому установка не требуется.Когда я устанавливал его отдельно, было так много зависимых установок, что установка была пробной.

Судя по тому, что я прочитал здесь, я попробую Tkinter, так как он должен быть простым и кроссплатформенным, но я решил просто поделиться с вами вышеизложенным.Мне нравится Mac OS по ряду разных причин, но инструменты Python гораздо проще установить в Windows (и, возможно, в других Linux).Я просто подумал, что расскажу здесь о Mac.

Мне нравится wxPython или Tk.

Tk поставляется со стандартным дистрибутивом Python, поэтому вам не нужно ничего устанавливать.

wxPython (wxWigets) кажется гораздо более мощным и выглядит намного приятнее.Он также хорошо работает кросс-платформенно (хотя и не идеально, поскольку использует разные базовые графические API для различных типов систем).

Я предпочитаю PyGTK, потому что я сторонник GNOME.Использование PyGTK кажется мне очень питоническим.Организация кода кажется последовательной, документация чистая и подробная, и к этому набору инструментов очень легко привыкнуть (за исключением, возможно, Treeviews).

Простого в использовании средства создания графического интерфейса для Python не существует.Это действительно удивительно, учитывая, что небольшие языки сценариев, такие как AutoIt и AutoHotkey, имеют отличные и очень простые в использовании средства создания графического интерфейса.Да ладно, последователи Python, не можете ли вы сделать лучше?

я работал с wxPython уже несколько лет, и мне это очень нравится.Самое лучшее в wxPython — это то, что пользовательский интерфейс ощущается как родной на разных платформах, на которых он работает (отлично в Windows и Linux, но не так хорошо в OS/X).

API не хватает последовательности, но к нему быстро привыкаешь.

Вы можете проверить Тестуфф (бессовестный плагин, так как это мой собственный продукт), чтобы получить представление о том, что можно сделать с помощью wxPython (хотя, надо сказать, приложив немало усилий).

wxPython, и я предполагаю, что PyGTK также может использовать wxGlade, чтобы помочь вам спроектировать большинство пользовательских интерфейсов, которые вы создадите.Это большой плюс.Вам не нужно учиться программировать графический интерфейс вручную, пока вы не будете готовы.Я создал несколько программ с графическим интерфейсом прямо из wxGlade, прежде чем достаточно освоился с тем, как работает wxPython, чтобы попробовать программировать вручную.

У PyQt есть похожее устройство графического макетирования, но мне никогда не удавалось добиться правильной компиляции PyQt.Также не хватало руководств и документации, показывающих, как создать окончательный код Python;многие документы, которые я нашел, относились к версии Qt для C++.

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

Существуют специфичные для Python gui-api, такие как kivy (преемник или pymt), pygui (на основе пирекса), pyui и nufox, которые не идут ни в какое сравнение с более надежными наборами инструментов, такими как wxpython, pyqt, pygtk и tkinter.

Это просто дополнительные дополнительные инструменты.

Единственное, что в них уникально, это API, специфичный для Python, точно так же, как существуют prima (API, специфичный для Perl) и Shoes (API, специфичный для Ruby).Это помогает нам понять, что когда tk — это порт API на основе tcl (а другие основаны на C и C++), то эти API специально созданы для соответствующих трех языков сценариев.

Из них kivy является наиболее надежным, в то время как кодирование pygui очень похоже на Python, pyui наименее надежен, но его стоит попробовать, и все они должны быть переносимыми, где бы ни использовался Python или приложение на его основе.

Кроме того, есть jpype, который представляет собой набор инструментов, используемый с jython и pydev, и который на самом деле представляет собой Java-джапи, настроенный под интерфейс Python/jython.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top