The repository contains the results of my work on "Advanced Python Scripting" course from www.cgscripting.ru.
It replaces the "PyQT" repository with the previous version of this course.
Course programme (in Russian):
Основы Python
Теория
Настройка компьютера
Переменные
Типы данных
Динамическая типизация
Операторы
Функции
Создание папок
Обработка секвенций
Системные аргументы
Основы классов
Установка IDE
Пространства имён
Что такое класс
Реализация класса
Методы и атрибуты класса
Принципы ООП
Принципы ООП. Инкапсуляция
Принципы ООП. Наследование
Принципы ООП. Полиморфизм
Статические атрибуты и методы класса
Декораторы
Текстовые форматы данных
Запись и чтение текстовых данных
Модуль pickle
Модуль JSON
Модуль XML
Атрибуты объекта
Конструкции Python
Set или множества
Генераторы списков
Функция lambda
Сортировка списков
Функция map
Функция zip
Функция-генератор
Обработка исключений
Контекст менеджер
Дополнительные материалы
Системный путь. TEMP директория
ZipFile
Модуль Glob
Основы PySide
Установка PyQt
Создание простого виджета
Создание класса виджета
Сигналы и слоты
QtDesigner
Компиляция UI файлов
Изменение параметров виджета
Лейауты
Класс QMainWindow
Создание простого проекта
Практика. Программа расчёта площади
Класс виджета
Стандартные диалоги. MessageBox и InputDialog
Стандартные диалоги. FileDialog
Создание кастомного диалога
Виджет списка QListWidget
Виджет таблицы QTableWidget
Виджет древовидного списка QTreeWidget.
Project Manager
Введение
Создание проекта в PyCharm
Подготовка виджетов
Реализация классов виджетов
Завершение
Контекстное Меню
Главное меню окна
Эвент контекстного меню
Коннекты в динамическом меню
Расширение стандартного контекстного меню
Переопределение метода mousePressEvent
Иконки и картинки
Иконки для кнопок
Создание модуля для иконок
Иконки для меню и панели инструментов
Иконки для элементов списка
Иконка для окна
Варианты отображение иконок в QListWidget
Вставка изображения в интерфейс
Ресурсы
Завершение базового блока
Drag&Drop (PRO)
Принципы Drag and Drop
Включение Drag and Drop
Получение данных из MimeData
Добавление элемента списка с помощью D&D
Перемещение элементов списка между виджетами
Иконка перетаскивания
Определение источника перетаскивания
Настройка кнопок мыши для Drag and Drop
Image Converter (PRO)
Консольный конвертер
Подготовка виджетов
Реализация процесса конвертирования
Реализация класса списка
Реализация запуска конвертирования
Домашнее задание
Дополнительные материалы (PRO)
Документация Qt
External Tool в PyCharm
Live Templates в PyCharm
Event Filter
Кастомный виджет (PRO)
Основные принципы рисования виджета
Рисование примитивов
Sine виджет
Интерактивный виджет
Color Picker
Графическая сцена (PRO)
Что такое графическая сцена Qt
Структура графической сцены
Создание простой графической сцены
Создание своего элемента сцены
Sequence Editor (PRO)
Введение и план
Настройка фона сцены
Реализация кастомного айтема
Реализация привязки к сетке
Выделение айтемов
Панорамирование сцены
Проверка коллизии айтемов
Динамическое изменение курсора
Изменение размера айтема
Коллизия во время изменения размера
Итоги и задание
Стили интерфейса (PRO)
Что такое стили интерфейса
Заготовки стилей Qt
Каскадные таблицы стилей
Назначение стиля интерфейсу
Простые параметры на примере QLineEdit
Определение стиля для состояний на примере QPushButton
Определение стиля контролов на примере QSlider.
Использование изображений в стиле
Элементы списка на примере QTreeWidget
Индивидуальные стили виджетов
Стиль для QMenuBar и QMenu
Домашнее задание
Процессы и потоки (PRO)
Процессы
Использование класса QProcess
Отображение прогресса выполнения
Потоки
Выполнение задачи в отдельном потоке
Получение данных из потока в процессе работы
Компиляция в Standalone (PRO)
Зачем нужна компиляция. Установка Pyinstaller
Простая компиляция с pyinstaller
Компиляция в единый файл
Получение корневой папки
Подключение внешних библиотек
Основы работы с сетью (PRO)
Сетевой протокол TCP
Получение локального IP адреса
Создание подключения по TCP протоколу
Обработка ошибок подключения