Ещё немного про Tk и про Mercurial
План
- Разобрать контрольные
- Про Tkinter:
- canvas, create_line, create_oval
bind: 'a', '<1>', '<4>', '<Motion>', '<Shift-a>', '<B1-Motion>'
Пример
1 from Tkinter import Tk, Canvas, Button
2 from math import sin, cos, pi
3
4 def calculate_line(steps):
5 line = "A"
6 for step in range(steps):
7 new_line = ""
8 for cmd in line:
9 if cmd == "A":
10 new_line = new_line + "B-A-B"
11 elif cmd == "B":
12 new_line = new_line + "A+B+A"
13 else:
14 new_line = new_line + cmd
15 line = new_line
16
17 def draw():
18 x = 0
19 y = 500
20 alpha = 0
21 side = 5
22 for cmd in calculate_line(7):
23 if cmd == "A" or cmd == "B":
24 new_x = x + side * cos(alpha)
25 new_y = y + side * sin(alpha)
26 canvas.create_line(x, y, new_x, new_y, fill="black")
27 x = new_x
28 y = new_y
29 elif cmd == "+":
30 alpha = alpha + pi / 3
31 elif cmd == "-":
32 alpha = alpha - pi / 3
33
34 root = Tk()
35 canvas = Canvas(root, width=500, height=500, background="white")
36 canvas.pack()
37 button = Button(root, text="Start!", command=draw)
38 button.pack()
39 root.mainloop()
Контрольная работа
- Имя, фамилия:
- Дана программа на питоне:
- Пришёл Вася, запустил программу, нажал на первую кнопочку, потом на вторую, потом закрыл окно программы. Что напечаталось при этом в консоли?
1 from Tkinter import Tk, Button 2 def hello(): 3 print "Mercury" 4 print "Venus" 5 root = Tk() 6 b1 = Button(root, text="Button1", command=hello) 7 print "Earth" 8 b1.pack() 9 print "Mars" 10 b2 = Button(root, text="Button2", command=hello()) 11 b2.pack() 12 print "Jupiter" 13 root.mainloop() 14 print "Saturn"
Задание
Памятка: задание – то, что обязательно выполнить для получения зачёта; упражнения – необязательные, но как правило задание решить проще, если сначала выполнить все упражнения; если вы меня пнёте, выдам вам комментарии про то, что и как лучше, и по заданию, и по упражнениям.
Напишите программу mirror-pointer.py, которая рисует окно, с полотном, на котором рисуется кружок, который всегда находится в точке, диаметрально противоположной курсору относительно центра окна.
Упражнения
Внесите свою директорию public_html под управление репозитория. Это место мы будем назвать рабочей площадкой. (hg init, hg add, hg commit).
Сделайте клон репозитория в другое место по вашему выбору. Это место мы будем называть тестовой площадкой. (hg clone путь_откуда путь_куда).
В клоне репозитория подредактируйте заглавную страницу. Добавьте внизу маленьким шрифтом заметку "stored in Mercurial SCM". Посмотрите, как выглядят ваши изменения. Запишите в репозиторий. Отправьте в рабочую площадку. (hg diff, hg commit, hg push).
"Случайно" удалите в тестовой площадке index.html. Восстановите его. (hg update -C)
Посмотрите, как выглядела страница в прежней версии. (hg update -r ...)
Вернитесь на последнюю версию. (hg update)
Напишите программу pointer.py, которая рисует окно, с полотном, на котором рисуется кружок, который всегда находится под курсором.
Напишите программу eyes.py, которая рисует два глаза, которые следят за мышиным курсором.