Ещё виджеты и публичная разработка
Ещё виджеты
- работа с текстом как с объектом: получение текста, вставка, удаление
привязка к специальному объекту типа StringVar, трассировка
Разбор Д/З. В частности, функция добавления пары кнопка b + метка l и обработчика, который должен изменять цвета именно этих объектов использует замыкание относительно c и b.
1 def addadd():
2 '''Add new Button/label pair to root'''
3 # Here's a trick, callback is generated too!
4 def c():
5 '''Change colors of this very l and b'''
6 l["background"]=randomcolor(False)
7 l["foreground"]=randomcolor(True)
8 b["background"]=randomcolor(True)
9 b["foreground"]=randomcolor(False)
10
11 b = Button(root, text="Color", command=c)
12 l = Label(root, text="Color")
13 s, r = root.size()
14 root.rowconfigure(r+1, weight=1)
15 b.grid(row=r+1, column=0, sticky=E+W+S+N)
16 l.grid(row=r+1, column=1, sticky=E+W+S+N)
Заметим также использование b["background"]=… вместо b.configure(background=…)
Публичная разработка
Цикл разработки:
- pull
- возможно, фиксация
- pull=fetch+merge
- edit → add → commit
- push
- remote
- посмотреть все удалённые репозитории:
git remote
- посмотреть все удалённые репозитории с настройками, откуда pull и куда push
git remote -v
- посмотреть все удалённые репозитории:
- branch
- посмотреть все ветки
git branch
- посмотреть все ветки, включая ветки удалённых репозиториев
git branch -a
создать ветку имя_ветки из текущей ветки:
git branch имя_ветки
создать ветку имя_ветки из произвольного коммита:
git checkout -b имя_ветки идентификатор_коммита
идентификатор коммита можно взять из git log или git log имя_ветки
переключиться на ветку имя_ветки:
git checkout имя_ветки
создать ветку имя_ветки из ветки удалённая_ветка удалённого репозитория репозиторий и переключиться на неё:
git checkout -b имя_ветки репозиторий/удалённая_ветка
- обновить объекты и помержиться (т. е. сделать pull) из ветки удалённого репозитория:
git pull репозиторий удалённая_ветка
удалить ветку имя_ветки
git branch -d имя_ветки
удалить ветку имя_ветки, даже если изменения в ней не опубликованы/не смержены
git branch -D имя_ветки
- посмотреть все ветки
- merge
- мерж-коммит
- reset и правила его применения
git reset идентификатор_коммита откатывает репозиторий, рабочая копия файлов становится как бы изменённой
git reset --hard идентификатор_коммита откатывает репозиторий и рабочую копию файлов
если известен идентификатор коммита, можно переключиться (git reset-ом или git checkout-ом или ещё чем) на этот коммит, даже если его нет в дереве (мы его затёрли reset-ом)
git commit --amend откатывает один коммит, и записывает вместо него другой
Правила оформления commit (повторение+зачем)
- 1 изменение = 1 commit
commit не ухудшает исходник
- если коммит ухудшает исходник (например, это начало большой доработки) лучше сделать branch, а потом помержить
- ...
Порталы: информационное пространство
- pull request
Д/З
Почитать про остальные виждеты в документации. Задать вопросы в ВКшной групе, если они появятся
Для выполнения этого задания вам понадобится уникальный идентификатор. Если вы зарегистрировались на GitHub, удобно выбрать гитхабовcкий login name. Если нет — выбирайте какой хотите, но с умом (например, ИмяФамилия латинскими буквами, это снизит вероятность конфликтов).
Создать ветку своего репозитория на основе вот этой ветки моего
- см. выше или спросить в группе, как это делается)
Скопировать файл 05_homework.py в файл 05_идентификатор.py
- Модифицировать это дерево таким образом, чтобы:
в нём содержалась ваша картинка идентификатор.png
программа просматривал все .png-файлы в текущем каталоге, и из всех идентификаторов строила Listbox
программа также просматривала файлы вида идентификатор.txt, в которых хранится предпочитаемое имя для Listbox, и из этих имён его и составляла
(необязательно) программа должна сообщать о том, сто для каких-то .png нет соответствующих .txt и наоборот
Создать pull request к моему исходному дереву. По идее, так как вы модифицируете только «свои» файлы, проблем у меня бывть не должно. Если они появились, значит, что-то пошло не так