Первая графическая программа. Модули, функции.
Содержание
Конспекты
План
- Теперь мы будем работать в репозитории. Основные команды:
hg clone – один-два раза
hg pull / hg fetch – ближайшее время не потребуется
hg merge – надеюсь, не потребуется никогда в жизни более (я без неё хорошо живу)
hg commit – каждые десять минут во время еды когда что-нибудь делаете
hg push – ежедневно на ночь
hg status – чтобы проверить, что всё в порядке
- Как работать из дома.
- Хелпы:
- help
- гугл
- Книги:
http://python.ru/ : http://www.python.ru/files/book-ods.pdf – стандартное введение
Р. Сузи – очень кратко о языке, очень подробно о стандартной библиотеке
Марк Лутз – с другого конца, но выглядит осмысленно
Как писать скрипты – как их запускать – F5 в idle или python имя_скрипта.py в командной строке
- Пример
- import / from ... import ...; слово "пространство имён"
- f(x); f(a=x)
- f.g
- help
- def
- виджеты
- два слова про pack
- mainloop
- Tk, Button, Canvas
Растровые vs векторные картинки; PhotoImage
Пример
1 import random
2 from Tkinter import Tk, Button, Canvas, PhotoImage
3
4 def put_box():
5 x = random.randrange(1, 200)
6 y = random.randrange(1, 200)
7 w = random.randrange(1, 201 - x)
8 h = random.randrange(1, 201 - y)
9 color = random.choice(["red", "green", "yellow", "blue", "black"])
10 button.configure(text="MORE!")
11 image.put(color, to=[x, y, x+w, y+h])
12
13 root = Tk()
14 canvas = Canvas(root, width=199, height=199, background="white")
15 image = PhotoImage(width=200, height=200)
16 canvas.create_image(0, 0, image=image, anchor="nw")
17 canvas.pack()
18 button = Button(root, text="Put box", command=put_box)
19 button.pack()
20 root.mainloop()
Контрольная работа
- Имя, Фамилия:
- У Алисы есть репозиторий. Его состояние можно понять из диалога с меркуриалом:
$ hg log changeset: 1:9ca57747c5c0 user: Alice summary: 2 changeset: 0:d74cffef847c user: Alice summary: 1 $ hg cat file 2 $ cat file 3 $ hg st M file
$ hg log changeset: 1:dae357da6aac user: Bob summary: 4 changeset: 0:d74cffef847c user: Alice summary: 1 $ cat file 5 $ hg cat file 4 $ hg st M file
Какое состояние будет у репозитория после того, как Боб скажет hg pull?
Задание
Памятка: задание – то, что обязательно выполнить для получения зачёта; упражнения – необязательные, но как правило задание решить проще, если сначала выполнить все упражнения; если вы меня пнёте, выдам вам комментарии про то, что и как лучше, и по заданию, и по упражнениям.
Начиная с этого момента все задания вы будете выполнять в репозитории. Если в задании (или упражнении) сказано "напишите скрипт x", это значит, что вы должны сделать файл с именем x и положить его в ваш именной репозиторий.
Получите к себе копию репозитория ssh://hg@kodomo.fbb.msu.ru/py2011/логин, где слово логин нужно заменить на ваш логин
Напишите скрипт more_buttons.py, которая рисует окошко, в котором есть кнопка "More", которая добавляет в это окошко ещё одну такую же кнопку
Упражнения
Сохраните пример (данный выше) в файле boxes.py, убедитесь, что он у вас запускается
Экспериментальным путём выясните, включает ли randrange а) левую, б) правую границы диапазона. (Особая плюшка тем, кто скажет свой ответ с уверенностью P < 5%)
Напишите скрипт circle.py (вида "полотно + кнопка"), который в несколько нажатий кнопки в некотором приближении рисует круг.