Модуль Graph
Версия 1.5.3 от 06.12.2021
Общее описание
Модуль graph – это набор функций, который представляет собой «обёртку» для создания учебных графических программ на языке Python на основе виджета Canvas библиотеки Tkinter.
Работа с окном
mainWindow()
функция возвращает ссылку на объект главного окна, что позволяет использовать все возможности Tkinter.
windowSize(width, height)
установка ширины (width) и высоты (height) рабочей области окна; при вызове без параметров возвращает кортеж (width,height) с текущими размерами:
width, height = windowSize()
canvas()
функция возвращает ссылку на объект области рисования, что позволяет использовать все возможности виджета Canvas пакета Tkinter.
canvasPos(x, y)
установка координат (x,y) области рисования; при вызове без параметров возвращает кортеж (x,y) с текущими размерами:
x, y = canvasPos()
canvasSize(width, height)
установка ширины (width) и высоты (height) области рисования; при вызове без параметров возвращает кортеж (width,height) с текущими размерами:
width, height = canvasSize()
При изменении размера области рисования автоматически корректируются и размеры окна (не нужно вызывать windowSize).
viewCoords(x1, x2, y1, y2)
устанавливает для каждой оси диапазоны математической декартовой системе координат, которые отображаются в области рисования; при вызове без параметров возвращается к экранной системе координат.
pointInView(x, y)
логическая функция, которая возвращает True, если точка с координатами (x,y) находится в пределах области рисования и False, если точка находится вне области.
circleInView(x, y, r)
логическая функция, которая возвращает True, если окружность с центром в точке (x,y) радиуса r находится в пределах области рисования и False, если точка находится вне области.
run()
запускает основной цикл обработки сообщений; вызов этой функции должен быть последней строчкой в любой графической программе.
|
close()
завершает основной цикл обработки сообщений; закрывает графическое окно.
Обработчики событий области рисования (Canvas)
onTimer(fn, time)
установить функцию fn, которая будет вызываться по таймеру каждые time миллисекунд.
onKey(key)
onKey(fn)
onKey(key, fn)
установить функцию fn как обработчик нажатия клавиши с символьным обозначением key; если функция не указана, обработчик нажатия этой клавиши отключается; если не указана клавиша, устанавливается один обработчик на все клавиши; функция fn должна принимать один параметр – блок данных о событии; через поле keycode этого блока можно получить код нажатой клавиши:
def keyPressed(event):
if event.keycode == VK_LEFT:
move(obj, x-5, y)
Список кодов виртуальных клавиш, определенных в модуле graph.py:
VK_SPACE = 0x20
VK_PRIOR = 0x21 # PAGE UP key
VK_NEXT = 0x22 # PAGE DOWN key
VK_END = 0x23 # END key
VK_HOME = 0x24 # HOME key
VK_LEFT = 0x25
VK_UP = 0x26
VK_RIGHT = 0x27
VK_DOWN = 0x28
VK_INSERT = 0x2D # INS key
VK_DELETE = 0x2E # DELETE key
VK_BACK = 0x08 # BACKSPACE key
VK_TAB = 0x09 # TAB key
VK_RETURN = 0x0D # RETURN key
VK_ESCAPE = 0x1B # ESC key
Для того чтобы выяснить коды и символьные обозначения клавиш, можно использовать такую программу:
import tkinter as tk
def __keyPress(event):
print("Key Press Event:")
print(" event.char:", event.char)
print(" event.keysym:", event.keysym)
print(" event.keycode:", event.keycode)
print(" event.keysym_num:", event.keysym_num)
root = tk.Tk()
root.bind("<KeyPress>", __keyPress)
tk.mainloop()
onMouseMove(fn)
установить функцию fn как обработчик события движения мыши; если функция не указана, обработчик отключается; функция fn должна принимать один параметр – блок данных о событии; через поля этого блока можно получить информацию о положении мыши:
|
def handleMove(event):
print("Координаты: (%s %s)" % (event.x, event.y))
print("Относительно экрана: (%s %s)" %
(event.x_root, event.y_root))
onMouseDown(fn, btn)
установить функцию fn как обработчик нажатия кнопки мыши с номером btn (btn=1 для левой кнопки, btn=2 – для средней и btn=3 для правой); если номер кнопки мыши не задан, устанавливается обработчик для всех кнопок; если функция не указана, обработчик отключается; функция fn должна принимать один параметр – блок данных о событии; через поля этого блока можно получить информацию о положении мыши (см. выше).
onMouseUp(fn, btn)
установить функцию fn как обработчик отпускания кнопки мыши с номером btn (btn=1 для левой кнопки, btn=2 – для средней и btn=3 для правой); если номер кнопки мыши не задан, устанавливается обработчик для всех кнопок; если функция не указана, обработчик отключается; функция fn должна принимать один параметр – блок данных о событии; через поля этого блока можно получить информацию о положении мыши (см. выше).
onMouseClick(fn, btn)
установить функцию fn как обработчик щелчка кнопкой мыши с номером btn (btn=1 для левой кнопки, btn=2 – для средней и btn=3 для правой);в текущей версии равносильно обработчику onMouseUp.
onMouseDblClick(fn, btn)
установить функцию fn как обработчик двойного щелчка кнопкой мыши с номером btn (btn=1 для левой кнопки, btn=2 – для средней и btn=3 для правой); если номер кнопки мыши не задан, устанавливается обработчик для всех кнопок; если функция не указана, обработчик отключается; функция fn должна принимать один параметр – блок данных о событии; через поля этого блока можно получить информацию о положении мыши (см. выше).