2642
Комментарий:
|
4519
|
Удаления помечены так. | Добавления помечены так. |
Строка 52: | Строка 52: |
События и их обработчики: * Стандартные действия (`command=`) * [[tkinter:events|Стандартные события]] * Регистрация обработчиков * Обработчики и частичные вычисления :) Tk: общие переменные * Например, [[tkinter:optionmenu]] и [[tkinter:label]] Ввод [[tkinter:entry]]: * Поле ввода как текстовый редактор * не нравится мудрить, вот вам !StringVar Другие виджеты |
## События и их обработчики: ## * Стандартные действия (`command=`) ## * [[tkinter:events|Стандартные события]] ## * Регистрация обработчиков ## * Обработчики и частичные вычисления :) ## ## Tk: общие переменные ## * Например, [[tkinter:optionmenu]] и [[tkinter:label]] ## ## Ввод [[tkinter:entry]]: ## * Поле ввода как текстовый редактор ## * не нравится мудрить, вот вам !StringVar ## ## Другие виджеты ## |
Строка 68: | Строка 68: |
'''TODO''' (наконец-то) * На tkinter |
1.#0 Прочитать * про [[tkinter:grid]] * в частности, выяснить, как узнать положение виджета в сетке * про [[tkinter:tkMessageBox|messagebox]] * в тексте — описание для Python2, выяснить, в чём отличие от Python3 * Спойлер: /* вместо модуля `tkMessageBox` теперь подмодуль `tkinter.messagebox` */ 1. Написать приложение для примитивной [[RW:Игра_в_15|игры в 15]] * Минимальное приложение * 17 кнопок (15 числовых + `New` + `Exit`) * Изменение размера окна приложения должно изменять размер числовых кнопок * Нажатие на `New` расставляет числовые кнопки в случайном порядке * Нажатие на `Exit` останавливает приложение * Нажатие на числовую кнопку, находящуюся рядом со свободным местом, перемещает эту кнопку на свободное место * Нажатие на другие числовые кнопки игнорируется * Когда все кнопки встают на свои места, выводится сообщение и игра хапускается по новой * Примерно так ☺: {{attachment:game15.gif}} * <!> Дополнительно * Не использовать неразрешимые расстановки * Сделать все числовые кнопки одинакового размера (обратите внимание на то, что иногда меняется размер всего окна) |
Ручное редактирование при слиянии; использование tkinter
Ещё про работу с историей
Раздельное добавление ханков
- Откат истории:
Команды git-reset (и git reset --hard)
git commit --interactive (ALT: пакет perl-Git)
Ветка/сторонний репозиторий как хранилище отдельных коммитов
Немного о формате
Патчи и Git:
git-format-patch и git-am / git-apply
Замечание: git не умеет в fuzzy (и правильно!)
⇒ иногда уместнее patch -u или patch --git
Интерферирующие коммиты
Немного о формате:
Ситуация:
- Мой коммит, их коммит, общий предок
- ⇒ diff-3 результат:
- всё, что можно, применено
всё, что отъехало, оформлено как diff3
И вот git mergetool до посинения
Адище тут: kdiff3, [g]vimdiff, diffuse, тысячи их
Снова Tkinter
(сколько успеем) Повторение:
- вложенность виджетов
- основное окно по умолчанию
- ручное раскладывание объектов
- mainloop
Понятие геометрии (grid, pack, place); grid
- строки и столбцы
- sticky
- columnconfigure / rowconfigure и эластичность (weight)
Д/З
- Прочитать
про grid
- в частности, выяснить, как узнать положение виджета в сетке
про messagebox
- в тексте — описание для Python2, выяснить, в чём отличие от Python3
Спойлер:
Написать приложение для примитивной игры в 15
- Минимальное приложение
17 кнопок (15 числовых + New + Exit)
- Изменение размера окна приложения должно изменять размер числовых кнопок
Нажатие на New расставляет числовые кнопки в случайном порядке
Нажатие на Exit останавливает приложение
- Нажатие на числовую кнопку, находящуюся рядом со свободным местом, перемещает эту кнопку на свободное место
- Нажатие на другие числовые кнопки игнорируется
- Когда все кнопки встают на свои места, выводится сообщение и игра хапускается по новой
- Примерно так ☺:
Дополнительно
- Не использовать неразрешимые расстановки
- Сделать все числовые кнопки одинакового размера (обратите внимание на то, что иногда меняется размер всего окна)
- Минимальное приложение