Графические интерфейсы. Задание-автомат.
Если вы решили один из вариантов этого задания и прислали решение до четверга (21 ноября 2013), то вы можете не посещать занятия по графическим интерфейсам и не выполнять соответствующие домашние задания.
Решение должно продемонстрировать ваше умение пользоваться:
- средствами размещения виджетов в окне
- кнопками (и/или событиями)
- полями ввода и заголовками для них (Entry и Label)
- стандартным диалогом открытия файла
Рекомендую пользоваться для этого пакетом Tkinter, входящим в стандартную поставку питона, но можно пользоваться и любым другим графическим пакетом.
Если чего-то из этого не получилось, прошу приходить на занятия и выполнять домашние задания.
Если это получилось, то решение будет оцениваться от 6 до 10 баллов в зависимости от полноты решения, удобства интерфейса (осмысленные поля, переносы длинных строк, меню и т.п.), простоты решения и стиля оформления кода. (Про последнее рекомендую почитать PEP-8).
Вариант 1. Фракталы
Вариант 1a. Множество Мандельброта
Для его решения потребуются виджеты Canvas и PhotoImage
Напишите программу, которая рисует множество Мандельброта для формулы: z = z ** 42 + c.
Вариант 1б. Черепахи-драконы
Для его решения потребуется пакет turtle.
Напишите программу, которая рисует кривую дракона. Каждое нажатие на кнопку перерисовки добавляет один уровень прорисовки и делит длину ребра пополам.
Вариант 1в
Выберите какой-нибудь ещё фрактал и напишите программу, которая рисует его. В этом случае нужно сообщить мне о своём решении до ближайшего воскресенья, 17 ноября.
В любом случае
Программа предоставляет пользователю пользователю выбрать файл с палитрой, описанный в формате CSV, со столбцами: количество шагов, R, G, B. Для выбора файла нужно использовать стандартный диалог открытия файлов.
Программа предоставляет возможность изменить центр отображаемой области и масштаб (для них должны быть предусмотрены поля ввода) –
Вариант 2. Классификатор
Общая идея: предположим, сделали вы новый токенизатор, ворднет или ещё более гениальный лингвистический проект. Чтобы его опубликовать, вам нужно будет вытащить из него кучу автоматически разобранных данных и проверить их с помощью эксперта (например, себя), и сказать, что среди них оказалось столько-то false positives и столько-то false-negatives. Это можно сделать и в экселе но там для этого придётся делать очень много лишних движений общих, да и на каждый рассматриваемый пример тоже как минимум 2-3 нажатия на кнопки. Хочется сделать штуку, в которой классифицировать кучу примеров будет максимально легко.
(Когда у меня возникали аналогичные потребности, я примерно такие штуки каждый раз под них делал. Это практически полезная задача, и если вы её сделаете хорошо, то для НИС или курсовой вы наверняка захотите её применить если не в этом, то в следующем модуле).
Постановка задачи:
Программа позволяет:
- открыть файл, в котором каждая строка считается отдельной находкой
выбрать признаки, по которым находки классифицируются, общим числом n. Для этого пользователю показывается n полей ввода Entry, в которые он вводит названия признаков (по умолчанию это четыре признака: TP, TN, FP, FN). (В интерфейсе должен быть предусмотрен способ выбора n: либо это Entry, либо кнопочки + и -, либо пользователю просто показывается 10 полей ввода, и пустые из них игнорируются).
запустить классификацию; при этом показывается текст очередной строки и n кнопок. По нажатию на любую из них мышью, либо по нажатию на клавиатуре на кнопку 1..n выбирается соответствующий ответ
- после классификации показать пользователю, сколько находок оказалось в какой категории
- после классификации сохранить CSV-файл из двух колонок: находка и выставленный классификатор