Разработка GUI с использованием PySide

Ссылки:

Вам понадобится:

Инструкция по установке PySide на Windows

  1. Компьютер должен быть подключен к интернету.
  2. Запустить командную строку (Пуск -> Стандартные -> Командная строка или наберите “cmd” в поиске).
  3. В командной строке перейти в подкаталог scripts каталога, куда установлен Python командой cd c:\Python39\scripts. Если вы добавили при установке Python в PATH, то можно это не делать.
  4. В этом каталоге есть программа pip.exe, используемая для скачивания и установки пакетов Python. Запустите ее из командной строки: pip install PySide6
  5. Тестовая программа, которая выводит версию библиотеки Qt (например, 6.5.0):
    import PySide6
    print(PySide6.__version__)
    

Упражнения

0: Среда разработки

Установите дома PySide6, сделайте скриншот запущенной среды разработки и запущенного приложения, использующего библиотеку PySide6. Скриншот сохранить в формате JPEG и сдайте в тестирующую систему.

A: Добавление кнопок инкремента, декремента и сброса

Пример с урока.

Пример с урока.

Добавьте в приложение три кнопки: увеличение значения на 1, уменьшение на 1 и сброса значения. Нажатие на эти кнопки должно приводить к изменению значения в классе MyCounter и всех элементах управления на экране (LineEdit, SpinBox, Slider).

B: Быки и коровы: реализация проверки введенного числа

Реализация игры «Быки и коровы».

Функциональность приложения. После запуска программы компьютер генерирует случайное 4-значное число (все цифры различны, начинается не с нуля). Число выводится на стандартный вывод  функцией print, в отладочных целях. Главное окно приложения содержит поле ввода (QLineEdit) для ввода задуманного числа, кнопку «Проверить» (QPushButton) и строчку для вывода сообщения (QLabel). При нажатии на кнопку производится проверка введенного числа, и либо выводится сообщение о том, что число некорректно, либо выводится количество быков и коров для введенного числа. Сообщения выводятся путем изменения текста у объекта QLabel.

Все надписи должны быть на русском языке. Файл должен быть сохранён в кодировке UTF-8. Поставьте в начало файла строчку

# -*- coding: utf-8 -*-

С: Быки и коровы: подсчет числа попыток, начало новой игры

Функциональность приложения — полноценный игровой режим с началом новой игры и подсчётом числа ходов.

В окне две кнопки «Угадать» и «Сдаться». Также ведется подсчет числа попыток, за которое было угадано число. Не учитывается в качестве попытки: ввод некорректного числа, ввод числа, совпадающего с тем числом, которое было введено последним перед этим.

При нажатии на кнопку «Угадать» идет проверка числа и выводится сообщение о результате проверки. Если в результате проверки было угадано задуманное число, то выводится сообщение об этом, выводится число ходов и на кнопке «Сдаться» текст меняется на «Новая игра», а нажатия на кнопку «Угадать» игнорируются (можно сделать кнопку неактивной). После нажатия на кнопку «Новая игра» задумывается новое число, текст кнопки меняется на «Сдаться» и все начинается заново.

При нажатии на кнопку «Сдаться» выводится задуманное число, после чего пользователю предлагается начать новую игру нажатием на кнопку «Новая игра».

Слова «быки» и «коровы» должны склоняться по правилам русского языка, например, «1 бык 2 коровы».

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

D: Кривая Коха: изменение числа итераций

Пример с урока.

Создайте приложение, которое отрисовывает кривую Коха порядка \(N\). Кривая должна «смотреть вверх». Количество итераций меняется при помощи QSpinBox.

Кривая Коха отрисовывается внутри специального виджета в методе paintEvent. Виджет имеет слот, обновляющий значение числа итераций. Этот слот должен изменить значение полякласса, хранящего число итераций, затем вызвать у виджета метод repaint() для обновления содержимого.

Сигнал valueChanged у QSpinBox, меняющего число итераций, соединяется с данным слотом виджета.

E: Кривая Коха: изменение размеров окна

Пример с урока.

Реализуйте приложение, которое отрисовывает кривую Коха с изменением числа итераций при помощи SpinBox.

Размеры кривой Коха должны меняться при изменении размеров окна. Сама кривая Коха должна быть максимального размера, допустимого для данного размера окна и располагаться в центре окна (вся кривая располагается в центре окна, а не базовая линия кривой).

Изменение размеров кривой Коха должно быть “гладким”, то есть при изменениях размера окна не должно быть “прыжков” кривой. Обратите внимание на переход между двумя случаями вписывания кривой Коха в окно.

F: Кривая Коха: обработка сигналов мыши

Пример с урока

Функционал приложения: масштабирование фрактала при помощи колеса мыши, перемещение фрактала внутри окна при помощи мыши, изменение фрактала при изменении размеров окна.

Требования к масштабированию фрактала.

  1. Все три операции (перемещение фрактала мышью, изменение масштаба про помощи колеса, изменение размеров окна должны происходить “гладко”, то есть не должно быть резких скачков изображения при последовательных применений разных операций).
  2. Масштаб изображения меняется только при движении колесом мышью. При изменении размеров окна масштаб фрактала не меняется.
  3. При движении колеса мыши масштаб меняется таким образом, что точка, расположенная в центре окна, остается неподвижной (вариант, который тоже принимается, но более сложный в реализации: неподвижной остается точка, на которую указывает мышь).
  4. При изменении размеров окна масштаб не меняется, а изображение перемещается таким образом, чтобы точка, которая была в центре окна, продолжала оставаться в центре окна.