Программа на Tkinter, которая печатает коды нажатых клавиш:
from tkinter import * def do(event): print(event.keycode) win = Tk() can = Canvas(win, width=800, height=600) can.pack() win.bind('<Key>', do) win.mainloop()
Отображаем коды клавиш в графическом окне:
from tkinter import * def do(event): can.itemconfig(txt, text=event.keycode) # Меняем текст у объекта txt. win = Tk() can = Canvas(win, width=800, height=600) txt = can.create_text(120, 70, text='Текст', fill='blue') # Пишем текст. can.pack() win.bind('<Key>', do) # Регистрируем/перехватываем нажатия клавиш направляя их в свою функцию. win.mainloop()
Задаём тексту размер, через указание шрифта и размера шрифта:
from tkinter import * def do(event): can.itemconfig(txt, text=event.keycode) # Меняем текст у объекта txt. win = Tk() can = Canvas(win, width=800, height=600) txt = can.create_text(120, 70, text='Текст', font=('Arial', '25'), fill='blue') # Пишем текст. can.pack() win.bind('<Key>', do) # Регистрируем/перехватываем нажатия клавиш направляя их в свою функцию. win.mainloop()
Сдвигаем текст вправо:
def do(event): can.itemconfig(txt, text=event.keycode) # Меняем текст у объекта txt. x1, y1 = can.coords(txt) # Получаем координаты объекта txt. can.moveto(txt, x=x1 + 5) # Меняем координату x у объекта txt - сдвигаем вправо.
Рисуем прямоугольник и сдвигаем его вместе с текстом вправо:
def do(event): . . . x1, y1, x2, y2 = can.coords(p1) # Получаем координаты объекта p1 - здесь их 4. can.moveto(p1, x=x1 + 10) . . . p1 = can.create_rectangle(10, 120, 210, 170, fill='green') . . .
TKinter - функции (команды в таблице)
event.keycode
canvas.move()
canvas.moveto()
canvas.itemconfig()
canvas.coords()
- canvas.move(ob, x, y) - переместить ob в координаты x, y - по ним расположить левый верхний угол
- canvas.itemconfig(ob, fill="red", width="200") - изменить свойства объекта ob
- x1, y1, x2, y2 = canvas.coords(ob) получить координаты объекта ob
- canvas.coords(ob, x1, y1, x2, y2) установить новые координаты объекта ob
- event.keycode в keycode находится код нажатой клавиши (применяется в функции, вызываемой в bind())