Как связать ключ пробела с определенным методом в tkinter (python)

Я работаю над проектом на python, и я сделал метод, чтобы сделать конкретную вещь в tkinter. Я хочу, чтобы всякий раз, когда я нажимаю клавишу пробела, изображение будет перерисовываться (запустите метод еще раз, потому что я закодировал метод, чтобы он мог перерисовываться над собой). Как именно я должен привязать пробел к методу, чтобы программа выполняла, рисовала и повторно рисовала, если бы я нажал пробел?

например, я хочу, чтобы всякий раз, когда я нажимаю пробел, программа рисует случайное местоположение на холсте:

from Tkinter import * from random import * root=Tk() canvas=Canvas(root,width=400,height=300,bg='white') def draw(): canvas.delete(ALL)# clear canvas first canvas.create_oval(randint(0,399),randint(0,299),15,15,fill='red') draw() canvas.pack() root.mainloop() 

как бы связать пробел с методом?

3 Solutions collect form web for “Как связать ключ пробела с определенным методом в tkinter (python)”

 from Tkinter import * from random import * root=Tk() canvas=Canvas(root,width=400,height=300,bg='white') def draw(event=None): canvas.delete(ALL)# clear canvas first canvas.create_oval(randint(0,399),randint(0,299),15,15,fill='red') draw() canvas.pack() root.bind("<space>", draw) root.mainloop() 

Вы могли бы сделать что-то вроде этого:

 from Tkinter import * from random import * root=Tk() canvas=Canvas(root,width=400,height=300,bg='white') def draw(event): if event.char == ' ': canvas.delete(ALL)# clear canvas first canvas.create_oval(randint(0,399),randint(0,299),15,15,fill='red') root.bind('<Key>', draw) canvas.pack() root.mainloop() 

В основном, вы привязываете функцию рисования к элементу верхнего уровня к привязке <Key> которая запускается всякий раз, когда нажимается клавиша на клавиатуре. Затем объект события, который был передан, имеет член char который содержит строку, представляющую ключ, который был нажат на клавиатуре.

Событие будет срабатывать только тогда, когда объект, на который он привязан, имеет фокус, поэтому я привязываю метод draw к root объекту, так как это всегда будет в фокусе.

Вы также можете использовать canvas.bind_all("<space>", yourFunction) который будет прослушивать события во всем приложении, а не только на виджетах.

  • Как создать график выполнения загрузки в ttk?
  • Откройте окно Tkinter, чтобы он находился на панели меню запуска
  • Почему параметр Button «команда» выполняется при объявлении?
  • Как передать текстовую запись в переменные с помощью tkinter в python
  • Tkinter и потоки
  • Как создать сборщик дат в tkinter?
  • Как получить значение Entry с помощью PY_VAR0 или PY_VAR1?
  • Поднимите и поднимите холст поверх холста в tkinter
  • Сообщение об ошибке функции сетки TkInter
  • Рисование прямоугольника с использованием событий мыши в Tkinter
  • Получить содержимое виджета Tkinter Entry
  • Python - лучший язык программирования в мире.