Kodomo

Пользователь

Ещё немного про Tk и про Mercurial

План

Пример

   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. Имя, фамилия:
  2. Дана программа на питоне:
    •    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"
      
      Пришёл Вася, запустил программу, нажал на первую кнопочку, потом на вторую, потом закрыл окно программы. Что напечаталось при этом в консоли?

Задание

Памятка: задание – то, что обязательно выполнить для получения зачёта; упражнения – необязательные, но как правило задание решить проще, если сначала выполнить все упражнения; если вы меня пнёте, выдам вам комментарии про то, что и как лучше, и по заданию, и по упражнениям.

  1. Напишите программу mirror-pointer.py, которая рисует окно, с полотном, на котором рисуется кружок, который всегда находится в точке, диаметрально противоположной курсору относительно центра окна.

Упражнения

  1. Внесите свою директорию public_html под управление репозитория. Это место мы будем назвать рабочей площадкой. (hg init, hg add, hg commit).

  2. Сделайте клон репозитория в другое место по вашему выбору. Это место мы будем называть тестовой площадкой. (hg clone путь_откуда путь_куда).

  3. В клоне репозитория подредактируйте заглавную страницу. Добавьте внизу маленьким шрифтом заметку "stored in Mercurial SCM". Посмотрите, как выглядят ваши изменения. Запишите в репозиторий. Отправьте в рабочую площадку. (hg diff, hg commit, hg push).

  4. "Случайно" удалите в тестовой площадке index.html. Восстановите его. (hg update -C)

  5. Посмотрите, как выглядела страница в прежней версии. (hg update -r ...)

  6. Вернитесь на последнюю версию. (hg update)


  1. Напишите программу pointer.py, которая рисует окно, с полотном, на котором рисуется кружок, который всегда находится под курсором.

  2. Напишите программу eyes.py, которая рисует два глаза, которые следят за мышиным курсором.