Чи є одна стандартна основа для розробки програм GUI Python.?


20

Існує так багато рамок для написання GUI-програми за допомогою Python. Але чи є одна ключова стандартна рамка? Наприклад, у нас є пакет .NET / C # у Visual Studio.

Я думаю і в інших перспективах. У майбутньому, якщо я дам інтерв'ю для роботи програміста Python, яку структуру GUI буде враховувати?

Мені також цікаво, що немає IDE, який би інтегрував GUI та мову Python. Вибір смаку хороший, але надмірний вибір стає відволікаючим.


Ні. "Стандарт" немає. .NET не стандартизований. Не існує органу зі стандартів, який написав стандарт для .NET. Існує стандарт для C #: ecma-international.org/publications/standards/Ecma-334.htm . Можливо, "стандарт" - це не те, що ти маєш на увазі?
С.Лотт

@ S.Lott: Вибачте за цей заплутаний термін. Я мав на увазі щось інше. Для додатків .NET Visual Studio - найкращий інструмент all-i-one, який включає в себе конструктор GUI та інші речі. Рідко люди шукають альтернативи VS.NET. Я мав на увазі подібний термін. Будь-який ідентифікатор Python IDE, де завершується пошук повного рішення "все в одному".
РПК

Ви питаєте про IDE (наприклад, Visual Studio)? Якщо так, то "фреймворк" - це неправильне слово у питанні. Поясніть, будь ласка, що ви просите.
С.Лотт

@ S.Lott: Ні, я не прошу про Visual Studio. Дозвольте уточнити. Візьмемо для прикладу ASP.NET. Це рамка, але вона дуже добре інтегрується в Visual Studio IDE. У вас є всі інструменти, доступні на центральній таблиці. Чи є щось для Python?
РПК

Visual studio - це IDE == всі інструменти для розробки в одному місці. "Я не запитую про Visual Studio" - це прямо протилежне "У вас є всі інструменти, доступні на центральній таблиці. Чи є щось для Python?". Або ви запитуєте про IDE (Python версію Visual Studio), або ви запитуєте про саму основу. Або, можливо, ви питаєте про обидва. Дуже важко зрозуміти, про що йдеться. Будь ласка, оновіть питання, щоб чітко вказати, що ви хочете.
S.Lott

Відповіді:


12

Ви можете писати програми Win32 API GUI в Python, якщо вам подобається писати весь код кодової панелі : проект PyWin32

Особисто мені подобається wxPython . Це кросплатформна платформа (повністю підтримується як в Linux, так і в Windows) і існує вже досить довго ... гідна база підтримки та багато документації / прикладного коду. Якщо ви хочете скористатися цим, погляньте на BoaConstructor . Це IDE для wxPython (або, можливо, краще сказано, IDE, записаний в і для wxPython). Це єдиний RAD IDE, спеціально для Python, який я натрапив на це, навіть варто згадати, окрім редактора інтерфейсу Qt (редактор інтерфейсу Qt Qt можна використовувати як для C ++, так і для PyQT).

Як згадував Пітер у своїй відповіді, Tk - це графічний інтерфейс користувача для старих додатків Python, але вони справді не виглядають на кінцевому користувачі. Для цього є деякі розширення, які дозволяють виглядати трохи краще і надають певну здатність до стилю інтерфейсу, але якщо ви не підтримуєте більш старий додаток для графічного інтерфейсу, я б не пропонував зайнятися цим.

pyGTK, також уже згадуваний, був би ще одним хорошим вибором. Це теж кросплатформна платформа, хоча я не мав жодного особистого досвіду розробки GTK в Windows. PyQT був би кращим вибором, IMO - я думаю, що графічний інтерфейс, створений з бібліотекою Qt, виглядає і функціонує вище, ніж у GTK. Я також вважаю, що механізм подій сигнал / слот Qt буде простішим у роботі. YMMV.

Насправді там немає жодного стандарту для розробки графічного інтерфейсу Python, принаймні, не те, що я бачив, але мої колеги розробники Python, з якими я працював протягом багатьох років, вони запропонували мені wxPython та PyQT більше, ніж будь-який інший набори інструментів Я не впевнений, чи існує значна кількість позицій щодо розробки графічного інтерфейсу Python, якщо чесно. Більшість розробок Python, які я робив протягом багатьох років, були серверними, але це не означає, що зараз немає різних підприємств, які хочуть пройти маршрут з відкритим кодом для своїх додатків GUI.


Програми Tkinter можна зробити так, щоб вони виглядали цілком прийнятними, часто майже не відрізняються від рідних додатків, якщо ви просто знайдете час для цього. Я погоджуся, що wxPython виглядає краще, не змінюючи налаштувань. Особисто я все ще віддаю перевагу Tkinter, тому що він виглядає достатньо добре для більшості людей, а моя продуктивність вище, ніж у wxPython.
Брайан Оуклі

Tk (Tkinter) не підтримує повний Unicode (наприклад, формування сценарію), якщо ви плануєте розробити додаток l10n / i18n.
user.dz

12

Tk раніше був стандартом, але він, мабуть, спрощений і некрасивий. Тоді Qt став досить популярним. Також можливий Gtk, який охоплює вибране на Linux-ish платформах.

Але ти маєш рацію, насправді немає відповіді, що не стосується розуму. Зрештою, надмірний вибір досить поширений у світі з відкритим кодом.


4
Я вибрав би Qt тільки тому, що він виглядає приємніше, ніж Gtk
TheLQ

1
+1 для чіткої відповіді. Qt хороший і потужний, і два прив'язки (ліцензійні) доступні.
ChristopheD

Це, мабуть, більше не потворно ПІДТРИМУВАННЯ в Windows. Все-таки мені не подобається, як виглядає код, який ви повинні написати. Код некрасивий. Зовнішній вигляд, суто рідний, і цілком розумний, нарешті.
Warren P

5

Немає «стандарту», ​​і я погоджуюся - безліч виборів - це біль. Що стосується інтегрованого IDE "двосторонніх інструментів" для GUI Python, мені також цікаво, чому там, схоже, не існує жодного - можливо, тому що існує так багато інструментальних наборів GUI, що ніхто не хоче вкладати гроші в IDE лише для одного їх.

Сказавши це, PyQt 4.7 з P3k дасть вам чудові графічні інтерфейси (а також безліч інших потужних функцій). Див. Http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/introduction.html - "Це довідковий посібник для PyQt 4.8.4. PyQt v4 - це набір прив'язок Python для v4 Qt додаток від Nokia. "

PyQt широко використовується, і на ньому є кілька хороших книг: див. Http://www.qtrac.eu/pyqtbook.html "Швидке програмування графічного інтерфейсу з Python та Qt" серед інших (книга трохи застаріла - її потрібно оновити для P3k).

Є дві серйозні проблеми з PyQt:

1) Він має деякі чітко "непітонічні" характеристики, тому що є лише тонкою обгорткою на C ++ Qt-в'язках. Але я рекомендував P3k-PyQt 4.7, оскільки деякі з них були розглянуті в "останніх і найбільших" пакетах. Перевірте цю публікацію:

Питання дизайну PyQt

2) Для комерційного використання існують досить круті ліцензійні збори, як для PyQt, так і для Qt.

Пізніше альтернативою PyQt є PySide від Nokia, ще одна обгортка Python для Qt, яка є повністю відкритим кодом (але не включає ліцензування Qt).

Знати багато про Qt - це не погано, що ринково сприймається, і ви отримаєте це від PyQt, тому я б розглядав це (або PySide), якщо ви намагаєтесь вирішити одну платформу GUI, щоб стати експертом у галузі .

Незалежно від того, що ви вибрали, я б пропонував уникати ткінтера здебільшого, навіть якщо це "поза коробкою" з Python, оскільки він надзвичайно обмежений, а в IMO він має сирий, застарілий зовнішній вигляд.

HTH


3

pyGTK є плодовитим. Він досить простий у використанні та робить графічні інтерфейси, які не виглядають наполовину погано.


Наскільки багата громада? Як швидко відповіді надходять на його форум?
РПК

1
@RPK, я поняття не маю, мені ніколи не доводилося просити допомоги, все досить просто у використанні.
dan_waterworth

Я не впевнений, що «плідний» - це правильне слово. "рясно виробляє потомство, молодняк, плід тощо; дуже плодоносно: плодоносне грушеве дерево" Можливо "популярне" або "приголомшливе".
S.Lott

@ S.Lott, плодовитий: "Аналогічно дає результати або працює в достатку". (друге вікісловне визначення). "Служить продукуванню; плідних результатів; активний; як, плідний мозок; суперечка, придатна для зла". (
Ревізований нестримований

плідно, як у "pyGTK виробляє багато додатків?" Здається, напруженим. Люди виробляють програми. pyGTK - це, мабуть, популярна основа, але це не схоже на виробника.
С.Лотт

0

Gtk3 - це графічний інтерфейс, який дуже зрілий. Він має вбудовані вкладення Python (GObject Introspection) та багато документації . Якщо ви працюєте зовсім небагато GUI, подумайте про використання Anjuta . У Anjuta є інтерфейс перетягування, щоб легко налаштувати віджети.

WxWidgets досить хороший, проте немає простого способу, щоб динамічно генерувалися зворотні виклики Python, як це робить Anjuta для Gtk.

PyGtk тепер застарілий на користь прив'язки Gtk3 до Python (Introspection GObject)

PyQt також є гравцем в графічному інтерфейсі Python, але він не має великої спільноти.

BoaConstructor довше підтримується і було б нерозумно використовувати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.