Pull to refresh

Написание приложений, основаных на Qt, на языке Python

Python *
Translation
Доброе время суток.
Недавно решил изучить ещё один язык программирования. Выбор пал на python. Написал несколько маленьких скриптов. Но прежде всего я хотел писать приложения с графическим интерфейсом. В интернете наткнулся на этот небольшой туториал, прочтение которого вылилось в предлагаемый Вашему вниманию перевод. Надеюсь, что кому-нибудь он будет полезен.


Это руководство нацелено на получение представления о том как писать маленькие приложения на python, использующие библотеку Qt.

Читать дальше →
Total votes 54: ↑53 and ↓1 +52
Views 116K
Comments 34

PyQt4 и QML

Python *
Sandbox
Совсем недавно, разработчики фреймворка Qt Software, обрадовали нас появлением GUI, альтернативного стандартному, со своим, довольно несложным, языком разметки — QML.
Связкой QML с основной программой является модуль Qt Declarative. Начиная с версии 4.7 — PyQt4 поддерживает этот модуль.
QML значительно проще и гибче основного GUI, помимо того является и языком программирования, так как позволяет писать функции на javascript. В то время как Python довольно простой и гибкий интерпретируемый язык.

далее...
Total votes 48: ↑45 and ↓3 +42
Views 12K
Comments 16

Финальный релиз PySide 1.0.0

Qt *
PySideВ блоге Qt появилась новость о релизе PySide 1.0.0 с множественными багфиксами и поддержкой всех вкусностей Qt 4.7 (Qt Quick, QML), а также Qt Mobility.
Также сообщается, что запланированна поддержка Python 3k и более Pythonic API )
Читать дальше →
Total votes 61: ↑57 and ↓4 +53
Views 2K
Comments 20

Реализация паттерна MVC для PyQt

Python *
Sandbox
Всем доброго времени суток!
В статье описывается реализация паттерна проектирования MVC для приложений использующих PyQt, на примере программы сложения двух чисел. Помимо описания реализации паттерна приводится описание процесса создания приложения.

Читать дальше →
Total votes 24: ↑20 and ↓4 +16
Views 26K
Comments 16

Рисуем свою кнопку в QGraphicsScene в PyQt4

Python *Qt *
Sandbox
Казалось бы, что может быть проще обычной кнопки с её стандартным поведением и привычным всему миру видом? Однако, сам процесс создания своей кнопки не менее интересен, чем создание целого приложения с помощью PyQt4.

Здесь приводится пример создания в QGraphicsScene своей рисованной кнопки с помощью QGraphicsWidget.

Рекомендуется к прочтению людям, имеющим опыт работы с PyQt4.
Читать дальше →
Total votes 20: ↑15 and ↓5 +10
Views 11K
Comments 22

Yet another python Chat client

Python *
Tutorial
Приветствую, хабраюзер.
Уже была статья про чат-клиент на питоне на хабре. Данная статья и сподвигла написать свой велосипед в академических целях, но повторять чужой код не интересно, поставим задачу поинтереснее: Jabber(Асимитричное шифрование RSA)+PyQt.
Если интересно добро пожаловать под кат.
Читать дальше →
Total votes 27: ↑21 and ↓6 +15
Views 15K
Comments 3

Простой классификатор на PyBrain и PyQt4 (Python3)

Python *Qt *
Изучая Python3, я портировал (как смог) библиотечку PyBrain. Об этом я уже писал здесь.
image
Теперь же я хочу немного «поиграть» с данной библиотечкой. Как я уже говорил в предыдущем посте, питон я только начал изучать, так что все написанное в этой статье не стоит воспринимать как Истину. Изучение — это путь, и он извилист.

Задачу поставим перед искусственной нейронной сетью (ИНС) весьма простую — классификацию, а именно: распознавание букв латинского алфавита.

Вроде бы классический пример, про него уже писали на хабре неоднократно: «Что такое искусственные нейронные сети?», «Нейронные сети и распознавание символов» и т.д.
Но моей целью стоит изучение питона на не самых простых примерах. Т.е. учимся сразу на сложном и незнакомом. Так мы найдем в два раза больше граблей, что позволит нам копнуть в глубины языка, разбираясь с «почему не работает?».

Под хабракатом вас ждёт: описание способа подготовки данных на PyQt4, использование модуля argparse, ну и конечно же PyBrain!
Читать дальше →
Total votes 34: ↑31 and ↓3 +28
Views 33K
Comments 29

Редактор с подсветкой кода. Проблемы и решения

Programming *Qt *
image
Большая часть аудитории Хабра регулярно пишет код. В текстовом редакторе или IDE. И сколько бы не было в нем окошек и менюшек, а сердце любого редактора — это компонент (widget), который редактирует и подсвечивает код.

Больше года назад на Хабре был цикл статей от namespace про компонент QScintilla (1, 2, 3), и моя статья с его критикой. Получилась некоторая недосказанность. Ясно, что все плохо, но не понятно, что делать.

Сейчас я написал свой велосипед компонент под названием Qutepart, и у цикла есть продолжение.
Эта статья расскажет о том, как устроена подсветка синтаксиса в моем проекте: какие проблемы возникали, и как они решались. Она про подходы, а не про специфику конкретного GUI-инструментария. Если интересно заглянуть «под капот» текстового редактора, добро пожаловать под кат.
Читать дальше →
Total votes 70: ↑69 and ↓1 +68
Views 31K
Comments 19

PyQt. Управляем памятью, собираем мусор

Python *Qt *
image
Давным давно был язык С. И были в нем 2 функции управляющие памятью — malloc и free. Но это было слишком сложно.
Посмотрел на это Бьёрн Страуструп и решил что нужно сделать все проще. И изобрел С++. В дополнение к malloc/free там появились new/delete, деструкторы, RAII, auto и shared указатели.
Посмотрел на это Гвидо ван Россум, и решил, что С++ тоже не достаточно прост. Он решил идти другим путем и придумал Python, в котором даже malloc и free нет.
А тем временем норвежские троли создали на С++ GUI-библиотеку Qt, которая упрощает управление памятью для своих объектов за счет того, что сама их удаляет, когда посчитает нужным.
Phil Thompson расстроился, что отличной библиотеки Qt нету для замечательного языка Python. И решил их объединить проектом PyQt. Однако, как оказалось, если скрестить разные парадигмы управления памятью, обязательно вылезут побочные эффекты. Давайте посмотрим какие…
Читать дальше →
Total votes 32: ↑29 and ↓3 +26
Views 18K
Comments 4

Импорт и преобразование словаря LinguaLeo в флэш-карты Anki

Python *
Sandbox

Постановка проблемы


Те, кто учат английский язык наверняка знакомы с Anki — программой для запоминания слов, выражений и любой другой информации с помощью интервальных повторений.

Другой популярный сервис, не нуждающийся в представлении — LinguaLeo позволяет при чтении оригинального текста сразу отправлять незнакомые слова на изучение, сохраняя их в собственном словаре вместе с произношением, изображением, транскрипцией слова и контекстом в котором оно употребляется. Пару лет назад LinguaLeo внедрили систему интервальных повторений, но в отличии от Anki система повторений не такая мощная и не содержит в себе возможностей настройки.

Что если нам попытаться скрестить ужа с ежом использовать преимущества двух платформ? Взять сами слова из Лингва Лео вместе со всеми медиафайлами и информацией и использовать ресурсы Anki для их запоминания.
Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Views 8.4K
Comments 1

pyqtdeploy, или упаковываем Python-программу в exe'шник… the hard way

Python *Qt *
Sandbox

КДПВ


Наверняка, каждый, кто хоть раз писал что-то на Python, задумывался о том, как распространять свою программу (или, пусть даже, простой скрипт) без лишней головной боли: без необходимости устанавливать сам интерпретатор, различные зависимости, кроссплатформенно, чтобы одним файлом-exe'шником (на крайний случай, архивом) и минимально возможного размера.


Для этой цели существует немало инструментов: PyInstaller, cx_Freeze, py2exe, py2app, Nuitka и многие другие… Но что, если вы используете в своей программе PyQt? Несмотря на то, что многие (если не все) из выше перечисленных инструментов умеют упаковывать программы, использующие PyQt, существует другой инструмент от разработчиков самого PyQt под названием pyqtdeploy. К моему несчастью, я не смог найти ни одного вменяемого гайда по симу чуду, ни на русском, ни на английском. На хабре и вовсе, если верить поиску, есть всего одно упоминание, и то — в комментариях (из него я и узнал про эту утилиту). К сожалению, официальная документация написана довольно поверхностно: не указан ряд опций, которые можно использовать во время сборки, для выяснения которых мне пришлось лезть в исходники, не описан ряд тонкостей, с которыми мне пришлось столкнуться.


Данная статья не претендует на всеобъемлющее описание pyqtdeploy и работы с ним, но, в конце концов, всегда приятно иметь все в одном месте, не так ли?

Читать дальше →
Total votes 25: ↑24 and ↓1 +23
Views 26K
Comments 10

Рисуем графы в PyQT

Python *Programming *Machine learning *

Графовая аналитика – распространенный инструмент в поиске связей в разрозненных данных. В статье попробуем с использованием PyQT и networkx сделать простейший инструмент для визуализации связей.

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

Алгоритм работы такой: на входе я брал *.csv файлы из базы данных, которые я сводил в pandas, и затем посредством группировок и фильтров выводил связи по каждому клиенту и организации, а после закидывал это все в networkx и получал на выходе граф, с которым уже работал совместно с аналитиком.

Аналитики, посмотрев на это все, сказали, а может сделаем что-нибудь быстрое для нас, чтобы мы сами там крутили все и смотрели. Конечно же, мой ответ был – а может что-нибудь из open-source? Возьмите Gephi, например. Прошла неделя, приходят обратно – вот это не так, это не то, и вообще сложно. Я честно отбивался, но как видите, не выдержал.

Итак, формируем задачу: Нужно сделать простое приложение для построения графов, не потратив на него много времени, а также, чтобы запускалось и работало без бубнов. Язык – Python. Чтобы не запариваться с оберткой, а сосредоточиться на внутренних алгоритмах, в качестве интерфейса взял PYQT.

Саму разработку разделил на два этапа, а именно сначала накидал макет интерфейса (макеты в Paint наше все), а потом уже добавил встроенные методы для расчета и отрисовки графа.

Читать далее
Total votes 3: ↑3 and ↓0 +3
Views 5K
Comments 9

PyQt6 — полное руководство для новичков

SkillFactory corporate blog Python *Programming *Desktop environments *Qt *
Translation
Tutorial

К старту курса по разработке на Python делимся детальным руководством по работе с современным PyQt для новичков. Чтобы читать было удобнее, мы объединили несколько статей в одну:

1. Первое приложение

2. Слоты и сигналы

3. Виджеты

За подробностями приглашаем под кат.

Читать далее
Total votes 28: ↑27 and ↓1 +26
Views 59K
Comments 10

Кроссплатформенный переключатель прокси-сервера на Python + Qt

Python *Programming *Qt *Visual programming *

Устав искать нормальный портативный инструмент для переключения между моим рабочим прокси-сервером и прямым подключением дома (который, к тому же, работал бы на Windows и Linux), я решил-таки запилить собственную тулзу для этих целей. Вооружившись Python и Qt, начал клепать код в VSCode... Что из этого вышло -- читаем под катом.

Читать далее
Total votes 9: ↑9 and ↓0 +9
Views 4.3K
Comments 23

PyQt6 — полное руководство для новичков. Продолжение

SkillFactory corporate blog Python *Programming *Desktop environments *Qt *
Translation
Tutorial

В первом материале мы рассказали о создании первого окна, о сигналах, слотах и событиях, а также о виджетах. Сегодня, к старту курса по Fullstack-разработке на Python, делимся продолжением — о макетах, работе с панелями инструментов и меню при помощи QAction, дополнительных и диалоговых окнах. За подробностями приглашаем под кат.

1. Макеты

2. Панели инструментов, меню и QAction

3. Диалоговые окна и окна предупреждений

4. Дополнительные окна

Читать далее
Total votes 8: ↑7 and ↓1 +6
Views 13K
Comments 9

Дополняемый калькултор

Python *
Sandbox

Всем доброго времени суток! Когда я начинал учиться программированию, мой мечтой и главной целью было создание игры на Unity. Выполнив и перевыполнив этот план, создав две игры плюс прототип, я понял, что мой разум жаждет новых испытаний. Потакая этому желанию, я начал учить Python - язык, являющимся простым и мощным инструментом, черпающим силу из огромного множества библиотек. Достигнув в освоении анаконды питона определённого уровня, я решил попробовать написать на нём что-нибудь, что можно использовать на практике. Не став мудрить, я выбрал в качестве цели калькулятор, однако в необычной его ипостаси. Изюминкой моего творения должна стать возможность дополнять приложение функциями, описываемыми пользователем в формате текстового файла. ну и чтобы всё это выглядело по-божески, калькулятор будет иметь до безобразия простой графический интерфейс.

В этой статье я расскажу и покажу как повторить проделанную мной работу и создать дополняемый калькулятор. Буду крайне признателен критике и советам более опытных коллег.

Начнём с самого простого - интерфейса. Для его создания нам понадобится библиотека PyQt5 и приложение Qt Designer.

Библиотека устанавливается всем известным способом - через pip в командной строке.

Here we go!
Total votes 14: ↑8 and ↓6 +2
Views 3.6K
Comments 14