Python GUI . Что выбрать новичку? [закрыт]
Закрыт. На этот вопрос невозможно дать объективный ответ. Ответы на него в данный момент не принимаются.
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах.
Закрыт 5 лет назад .
Какой GUI фреймворк для Python выбрать новичку для создания приложений под windows ? Или же лучше начать с изучения стандартной библиотеки Tkinter?
Отслеживать
задан 12 сен 2018 в 16:39
Aleksei Grabor Aleksei Grabor
383 7 7 серебряных знаков 22 22 бронзовых знака
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
PyQt5
PyQt5 довольно неплохое решение, может показаться сложным сначала, но потом, весьма логичным. В комплекте идёт QtDesigner — программа для создания графический окон.
Отслеживать
ответ дан 12 сен 2018 в 16:47
551 2 2 серебряных знака 12 12 бронзовых знаков
Подскажите еще кое-что. Слышал , что новичкам не следует браться за фреймворки, а изучать основы, принципы, и т.д. . Так ли это?
12 сен 2018 в 16:53
Изучать основы и принципы. Если у Вас некоторые трудности в понимании базы, с фреймворками пока повремените. Ткинтер, вообще, внимания новичка не стоит, как и Делфи, потому, что устарели. Просто сравните интерфейсы на ткинтере и qt. Конечно, это лишь моё мнение и Вам выбирать, прислушаться или нет.
12 сен 2018 в 17:13
@Евгений, вот не соглашусь по поводу Tkinter. На нем можно реализовывать вполне достойные интерфейсы, и не нужно тянуть с собой (если говорить про Windows) огромный Qt ради формочки с десятком элементов управления.
12 сен 2018 в 18:23
@AlekseiGrabor, для новичка главное пробовать. Если интересует веб — берите фреймворки. Если интересует десктоп — берите разные GUI библиотеки, пробуйте, разбирайтесь, смотрите минусы и плюсы. Параллельно (не до и не вместо вышеперечисленного) изучайте основы, алгоритмы, структуры данных, хотя бы ознакомительно. Берите интересные для себя задачи и пробуйте решать их.
12 сен 2018 в 18:25
@insolor, может Вы и правы и я смотрю со стороны линуксоида. И моё мнение ткинтере слижком уж предвзятое из-за отсутсвия лёгкого способа группировки эл-тов и среды визуального программирования которая бы хотя бы приближена к возможностям QtCreator/Designer. Да, я знаю про python-quickui.
Что выбрать для написания GUI в 2021.
Что лучше выбрать для написания десктопного GUI приложения в 2021 году.
Нужно написать кросплатфоменный интерфейс.
Там должны быть дерево, таблицы (большие, сортировки, группировки, …), формы. Хочется не писать их самостоятельно.
- C# (WinForms или Avalonia, Gtk), поскольку на c# писал мало, и есть ощущения, что скорость разработки не очень высокая. Сходу полноценных таблиц и деревьев вообще не нашел.
- Python (PySide6), посмотрел по gui на python. Варианты по сути:
- PyQt(PySide) 6 версия уже достаточно стабильна ? Документации навскидку не очень много нашел.
- wxWidgets есть ощущение, что менее мощный. (тут смущает, что будет медленнее C# и опять же GIL).
В C++ лезть не хочется, так как давно на нем не писал, и есть ощущение, что на нем разработка будет еще медленнее чем на C#.
Предварительно кажется, что python будет компромисным вариантом.
Разработчик пока всего один, и не хочется надолго увязать в написании GUI, так как есть и другие задачи.
У кого какие соображения по данному вопросу ?
ol1mp ★
13.07.21 20:14:13 MSK
← 1 2 3 →Сам спросил — сам ответил. Уносите.
anonymous
( 13.07.21 20:18:29 MSK )
wxWidgets написаны на c++, сами виджеты не тормозят. GIL при правильной многопоточности (у wxPython свои расширения для этого) ты вообще не заметишь.
Посмотри ещё таблицы на TkInter — там есть ОЧЕНЬ навороченные решения, и всё буквально летает (для web ui до таких таблиц как до луны раком), в wx таблицы в комплекте хорошие, но для Tk сторонние решения.
Я для просмотра гигантских pandas таблиц вот это использую:
https://pandastable.readthedocs.io/en/latest/examples.html — там для таблицы виртуальный буфер, она вообще ракета.Думаю, если для группировки/сортировки возьмёшь pandas/numpy и грамотно запроектируешь ui (с буфером), то на python можно будет сделать очень быстрое приложение.
Для QT и wx есть визуальные форморисовальщики.
Shadow ★★★★★
( 13.07.21 20:19:28 MSK )
Последнее исправление: Shadow 13.07.21 20:25:32 MSK (всего исправлений: 3)Топ 5 библиотек Python для создания графического интерфейса

Графический интерфейс (GUI) играет важную роль в создании пользовательских приложений, предоставляя удобный способ взаимодействия с программным обеспечением. Python, популярный язык программирования, предлагает множество библиотек для разработки графического интерфейса. В этой статье мы рассмотрим топ 5 библиотек Python, которые предоставляют мощные и гибкие инструменты для создания интерактивных GUI-приложений.
1. PyQt:
PyQt является одной из наиболее популярных и мощных библиотек для разработки графического интерфейса на Python. Она предоставляет обертку над Qt Framework, который является одним из самых мощных и широко используемых фреймворков для создания приложений с GUI. PyQt позволяет создавать кросс-платформенные приложения с богатым набором функций и профессиональным внешним видом.2. Tkinter:
Tkinter является стандартной библиотекой Python для создания графического интерфейса. Она предоставляет простой и интуитивно понятный API для разработки приложений с использованием различных виджетов. Tkinter является частью стандартной библиотеки Python, поэтому она доступна по умолчанию и не требует дополнительной установки. Она является отличным выбором для начинающих разработчиков, которые хотят быстро создать простые GUI-приложения.3. Kivy:
Kivy — это открытая и свободная библиотека Python для создания мультимедийных приложений и графического интерфейса. Она разработана с учетом кросс-платформенности, что позволяет создавать приложения, работающие на различных операционных системах, включая Windows, macOS, Linux, Android и iOS. Kivy предоставляет мощные инструменты для создания эффектных пользовательских интерфейсов с использованием языка разметки Kv.4. PySide:
PySide является библиотекой Python, предоставляющей возможности для создания графического интерфейса с использованием фреймворка Qt. Она предоставляет Python-обертку над Qt, позволяя разработчикам создавать мощные и кросс-платформенные приложения с интерактивным пользовательским интерфейсом. PySide имеет простой и интуитивно понятный API, что делает процесс разработки приложений более эффективным.5. wxPython:
wxPython — это библиотека Python, которая предоставляет возможности для создания кросс-платформенных графических интерфейсов с использованием фреймворка wxWidgets. Она позволяет разработчикам создавать приложения с настраиваемыми виджетами, обработкой событий и взаимодействием с пользователем. wxPython обладает обширной документацией и активным сообществом, что делает ее привлекательным выбором для разработчиков.Выбор библиотеки для разработки графического интерфейса в Python зависит от ваших конкретных потребностей и опыта. PyQt, Tkinter, Kivy, PySide и wxPython предлагают разные функциональные возможности и подходят для различных типов приложений. Исследуйте каждую из этих библиотек, изучайте их документацию и примеры, чтобы выбрать тот инструмент, который наилучшим образом соответствует вашим требованиям. Создание эффективного и привлекательного графического интерфейса с помощью Python никогда не было таким доступным и удобным.
Разработка продвинутого GUI на Python
Почти каждое программное обеспечение, используемое на экране компьютера, представляет собой GUI того или иного вида. Большинство приложений с графическим интерфейсом предоставляют платформу для дружественного взаимодействия с программным продуктом. Блокнот и обычный калькулятор, как правило, входящие в системы Windows, являются элементарными примерами GUI, доступного всем пользователям.
Большинство языков программирования, включая Python, позволяют разрабатывать пользовательский интерфейс, через который осуществляется взаимодействие человека и компьютера. Используя Python и различные его библиотеки, предназначенные для GUI-разработки, такие как Tkinter, Kivy, PyQt5, можно легко проектировать графические интерфейсы.
Подобные инструменты значительно упрощают начальный этап разработки практически любого типа интерфейса, предназначенного для выполнения многочисленных задач.
Однако большинство этих интерфейсов выглядят несколько безвкусными с точки зрения структуры дизайна. Для создания эстетически совершенных и современных дизайн-макетов следует использовать более специализированный продвинутый GUI. Тогда общий вид разрабатываемого программного обеспечения будет более впечатляющим и привлекательным.
В этой статье сосредоточимся на создании современной среды разработки, отличающейся улучшенным пользовательским интерфейсом с общей оптимизацией дизайна для доступа и использования ее функций.
Современный GUI для загрузки изображений
Создадим современный GUI с кнопкой для загрузки случайных изображений из рабочего каталога. В качестве основного инструмента разработки GUI будем использовать библиотеку CustomTkinter. С ее помощью создадим рабочий процесс, включая кнопку, метки, изображения и другие необходимые объекты.
Пакет CustomTkinter устанавливаем с помощью простой команды pip, как показано ниже. Библиотека CustomTkinter доступна на сайте Python Package Index, куда можно перейти по ссылке.
После установки библиотеки перейдем к следующему шагу — импортированию библиотек, необходимых для разработки интерфейса. Стоит отметить, что неплохо было бы установить и библиотеку Tkinter, так как эти две библиотеки взаимозаменяемы при решении определенных задач.
Импорт необходимых библиотек
На этом этапе импортируем все библиотеки, которые понадобятся для создания продвинутого GUI:
- Библиотеку CustomTkinter, только что установленную с помощью команды pip.
- Библиотеку Tkinter, которую можно использовать одновременно с модулем CustomTkinter, поскольку некоторые функции являются производными друг от друга.
- Библиотеку Pillow, которая является одной из лучших библиотек Python для обработки различных типов задач, связанных с изображениями. Из библиотеки Pillow импортируем классы ImageTk и Image, что позволит обрабатывать задачи внутри GUI.
Ниже приведен блок кода для импортирования всех необходимых библиотечных модулей.
# Импортирование библиотеки CustomTkinter для создания продвинутого GUI.
import tkinter
from PIL import ImageTk, ImageУстановка темы и создание фона интерфейса
Следующий важный шаг после импортирования библиотек — установка внешнего вида и темы разрабатываемого графического интерфейса. Для внешнего вида библиотека CustomTkinter предлагает такие варианты, как темный и светлый режимы, а для цветовой темы по умолчанию — синий, темно-синий и зеленый тона.
После установки внешнего вида и цветовой темы определим функциональность CustomTkinter в качестве корневого объекта для комплектации необходимых функций. Кроме того, зададим геометрию интерфейса, в котором будем выполнять необходимые операции. Обратите внимание, что размеры интерфейса могут варьироваться в зависимости от конкретных целей, а параметры используемых изображений могут потребовать корректировки при выполнении определенной задачи.
# Настройка внешнего вида и темы GUI-окна
customtkinter.set_appearance_mode("dark")
customtkinter.set_default_color_theme("blue")
# Установка размеров и определение функции CustomTkinter
app = customtkinter.CTk()
app.geometry("1280x720")Создание функции кнопки
Теперь напишем функцию, которая позволит выводить изображения в графическом окне (либо на весь экран, либо в соответствующей рамке). Функция photo image в классе ImageTk позволяет выводить нужное изображение. Будем также использовать библиотеку CustomTkinter, внутри которой выводятся изображения. Ниже приведен фрагмент кода:
# Создание функции для выведения нашего изображения
def button_function():
img = ImageTk.PhotoImage(Image.open("Trees.jfif"))
label = customtkinter.CTkLabel(master = frame, image = img, text="")
label.pack()
print("button pressed")Создание рамки и подключение кнопки
На последнем этапе создадим рамку, в которой будет выводиться изображение. Упакуем рамку в рабочее графическое окно. После создания рамки для выведения изображения по нажатию кнопки создадим саму кнопку, которая будет работать на основе ранее определенной функциональности. Обеспечим центральное выравнивание кнопки и упакуем функцию. Наконец, зациклим рабочую корневую функцию для процесса. Фрагмент кода приведен ниже:
# Создание рамки
frame = customtkinter.CTkFrame(master = app)
frame.pack(pady = 20, padx = 60, fill = "both", expand = True)
# # Использование CTkButton для выведения изображения
button = customtkinter.CTkButton(master=frame, text="Display Image", command=button_function)
button.place(relx=0.5, rely=0.8, anchor=tkinter.CENTER)
button.pack()
app.mainloop()После создания завершенного кода проекта запустим Python-приложение и увидим графическое окно с рамкой и кнопкой “Display Image” (“Вывести изображение”) внутри рамки. После нажатия на кнопку изображение будет выведено в рамке. Ниже приведен рабочий скриншот проекта.
Создать такой проект не очень сложно: достаточно нескольких строк кода и правильных библиотек. В следующем разделе рассмотрим более продвинутую версию этого проекта. В ней будет реализован дополнительный слой функциональности, позволяющий добавить в проект немного креативности.
Продвинутый прием для загрузки нескольких изображений
Рассмотрим более продвинутую версию проекта, в которой будет выводиться рандомизированное изображение после выведения изображения и очищения от него.
Мы будем использовать библиотеку Random, которая позволит интерпретировать случайный выбор изображения, когда экран очищается от изображения с помощью кнопки “Delete Image” (“Удалить изображение”) и когда сразу после этого нажимается кнопка “Display Image” (“Вывести изображение”). В этой статье для показа генерации изображений использовано три изображения, сохраненные в каталоге рабочего проекта как “Trees.jfif”, “Maps.jfif” и “Books.jfif”.
Нужно также определить функцию clear frame, которая удалит все предыдущие виджеты, собранные в рамке. По этой причине разместим кнопки “Delete Image” и “Display Image” вне рамки в графическом окне. Процесс отображения кнопок в графическом окне и запуска программы остается прежним. Блок кода для всего проекта приведен ниже:
# Импорт библиотеки CustomTkinter для построения продвинутого графического интерфейса
import customtkinter
import tkinter
from PIL import ImageTk, Image
import random
# Настройка внешнего вида и темы GUI-окна
customtkinter.set_appearance_mode("dark")
customtkinter.set_default_color_theme("blue")
# Установка размеров и определение функции CustomTtkinter
app = customtkinter.CTk()
app.geometry("1200x800")
# Создание функции для выведения нашего изображения
def button_function():
image_list = ["Trees.jfif", "Maps.jfif", "Books.jfif"]
selected_Image = random.choice(image_list)
print(selected_Image)
img = ImageTk.PhotoImage(Image.open(selected_Image))
label = customtkinter.CTkLabel(master = frame, image = img, text="")
label.pack()
print("button pressed")
def clear_frame():
for widgets in frame.winfo_children():
widgets.destroy()
# Создание рамки
frame = customtkinter.CTkFrame(master = app)
frame.pack(pady = 20, padx = 60, fill = "both", expand = True)
# # Использование CTkButton для выведения изображения
button = customtkinter.CTkButton(master=app, text="Display Image", command=button_function)
button.place(relx=0.5, rely=0.8, anchor=tkinter.CENTER)
button.pack()
# # Использование CTkButton вместо кнопки tkinter
button = customtkinter.CTkButton(master=app, text="Delete Image", command=clear_frame)
button.place(relx=0.5, rely=0.6, anchor=tkinter.CENTER)
button.pack()
app.mainloop()В этот проект можно внести и другие улучшения. Например, объединить кнопки “Delete Image” и “Display Image” в одну сущность, чтобы избежать нажатия двух кнопок, когда необходимо выводить изображение. Можно внести в проект много других уникальных функций, импровизируя с кодом и добавляя необходимые элементы.
Заключение
Графика и графические пользовательские интерфейсы играют важнейшую роль в большинстве проектов по разработке программного обеспечения. Более современные подходы, бросающие вызов статус-кво, позволяют создавать инновационные креативные рабочие интерфейсы. Значительное улучшение взаимодействия человека и компьютера обеспечивается высококачественным графическим интерфейсом.
Из этой статьи вы узнали, как использовать библиотеку CustomTkinter для Python-разработки более современного продвинутого графического интерфейса. Сначала мы создали проект таким образом, чтобы при нажатии на кнопку выводилось изображение в рамке графического окна. В следующем разделе был рассмотрен более сложный подход к проекту для генерации случайных изображений при нажатии на кнопку.
Настоятельно рекомендую попробовать более сложные модификации и создать несколько проектов, чтобы лучше ознакомиться с различными функциями и классами, доступными в библиотеке CustomTkinter.
- Обзор инструментов для автоформатирования кода Python
- Python PyQt5: современные графические интерфейсы для Windows, MacOS и Linux
- Руководство по созданию интерактивных визуализаций на Python
Читайте нас в Telegram, VK и Дзен