Розробка графічних інтерфейсів на Python: Tkinter проти PyQt [закрито]


94

Якщо ви хочете розробити користувальницький інтерфейс у Python, який саме вибрати: TkInter чи PyQt?

Я щойно розпочав роботу з TkInter, і мені вдалося отримати кілька простих інтерфейсів, що працюють з елементарними віджетами, такими як мітка, кнопка, текстове поле тощо. Просто цікаво дізнатись, наскільки хороший PyQt буде порівняний з TkInter?

ура


3
Крім того, зверніть увагу, що вам доступно досить багато варіантів, крім просто TkInter та PyQt. wxPython - це той, який відразу спадає на думку, але є більш повний список на wiki.python.org/moin/GuiProgramming та коротший список найпоширеніших пакетів графічного інтерфейсу, перелічених на python.org/doc/faq/gui .
esm

Відповіді:


77

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

Є лише два реальні (потенційні) недоліки:

PyQt доступний лише за GPL. Це означає, що якщо ви випустите свій код, він повинен бути доступний за сумісною ліцензією, на умовах виключення GPL від Nokia або за комерційною ліцензією (що коштує грошей). Це на відміну від Qt, який зараз доступний під LGPL.

PyQt не включений за замовчуванням до інсталяцій Python. Вам доведеться упакувати бібліотеку самостійно. (Ars Technica має гарну статтю про те, як це робити для Windows та OS X.)


5
Для відкритого коду PyQt надає виняток GPL, який визначає список ліцензій, які ви можете використовувати. Повний текст винятку можна знайти тут, а його копія включена у вихідний пакет PyQt. riverbankcomputing.co.uk/software/pyqt/license doc.trolltech.com/4.4/license-gpl-exceptions.html
sunqiang 07

Правильно, дякую. Я додав нотатку.
Sam DeFabbia-Kane

16
Nokia почала створювати бібліотеку під назвою PySide, яка забезпечує майже ідентичні функції, як PyQt, але під LGPL. Зараз це доступно лише в системах на базі * NIX. Але ви можете просто поміняти "PyQt4" на "PySide" у своєму імпорті і мати (майже) все працює. pyside.org
Джеймс,

Посилання для виключення GPL від Nokia мертве.
Стевойсяк

1
Станом на 2019 рік PyQt5 вийшов, і PySide2 підтримує більшість тих самих прив'язок Qt згідно LGPL.
LightCC

40

Зараз PyQt - наш головний набір графічних інтерфейсів, і після 1 року розробки я не хочу повертатися до чогось іншого. Він стабільний, зрілий, кроссплатформенний і повністю рідний. Навіть системні діалогові вікна (наприклад, для відкриття файлів) використовуються операційною системою.

Я налаштував свою тему XP, і тепер мої програми відповідно обробляють. Це створює дуже професійний вигляд, не порівнянний з таким набором інструментів Swing. API великий і виходить за межі чистого графічного інтерфейсу, наприклад віджетів. Він підтримує підключення до бази даних, друк, створення потоків (я використовував це, і це працює як шарм), ... Я навіть використовую його для створення PDF-файлів (інші зовнішні бібліотеки не потрібні). Я б порекомендував книгу Марка Саммерфілда, однак " Швидке програмування графічного інтерфейсу за допомогою Python і Qt ", щоб отримати швидкість. Майте на увазі, що Qt поставляється з конструктором графічного інтерфейсу (дизайнером Qt), який є найкращим із усіх, які я використовував (і я перепробував їх багато).
Я навіть використовую цей конструктор для створення макетів для показу користувачам (це так просто!).

Я представив його ще 2м розробникам тут і не чув, щоб вони скаржились ...


10
Застереження: Qt виглядає лише рідним. Елементи користувальницького інтерфейсу насправді емулюються (принаймні на Mac OS X). Повідомляється, що "відчуття" графічних елементів часом дивне через цю емуляцію.
Eric O Lebigot

22

Я використовую tkinterдля невеликих додатків з простим інтерфейсом. Мені це дуже подобається, навіть якщо відсутність хорошого редактора WYSIWYG може бути проблемою для великого додатка.

Для великих програм PyQtможе бути кращим вибором. У нього дуже хороший дизайнер екрану, але ліцензування може бути проблемою.

Нарешті, wxPythonможливо хороша альтернатива, оскільки вона не має цих недоліків.


7
Я писав великі комерційні програми на tk без проблем. Це досить гарно масштабується. Не особливо добре, якщо у ваших наборах даних трапляються мільйони елементів, але мало хто розробляє подібні програми.
Брайан Оклі

2
Дякуємо Брайану за відгук. Ця відповідь була зроблена давно, і я маю кращий досвід роботи з Tk, і мені це подобається все більше і більше.
luc

я оновив свій відповідь. Більше pb інструментів розробника, ніж проблема масштабованості
luc

8

PyQt дійсно простий у вивченні, а документи для Qt також працюють для PyQt, також є порти для .NET та Java. Отже, це фея крос-платформа та крос-мова. Також у вас є інтегрований PyQt в Eric IDE .

Підтримка стилів CSS також надзвичайно блискуча.

Перегляньте новий інсталятор OpenSuSE, щоб побачити, що з цим можна зробити.


4

Ви можете створювати величезні графічні інтерфейси за допомогою Tkinter. Якщо вам подобається спробувати модуль pytkgen, це допомагає створити графічний інтерфейс Tkinter з визначень JSON: https://github.com/tmetsch/pytkgen


1

Я використовую PyQt. Він є міжплатформенним, з ним легко працювати та надійно.

Я використовував TkInter легковажно, і я не бачу жодних моментів, що роблять TkInter кращим за PyQt.

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