Как связать ключ пробела с определенным методом в 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) который будет прослушивать события во всем приложении, а не только на виджетах.

  • Удаление кнопок минимизации / увеличения в Tkinter
  • Все функции tkinter запускаются при запуске программы
  • Как сделать события tkinter repond во время ожидания данных сокета?
  • Tkinter: ProgressBar с неопределенной продолжительностью
  • Как включить tkinter при использовании cx_freeze для преобразования скрипта в .exe?
  • tkinter - Как установить шрифт для текста?
  • python и tkinter: использование полос прокрутки на холсте
  • Как создать представление дерева с флажками в Python
  •  
    Interesting Posts for Van-Lav

    В pytest, как пропустить или пропустить определенные светильники?

    Вычислить n-й день с первого события в каждой группе в Pandas

    Почему мой цикл требует больше памяти на каждой итерации?

    Можно ли использовать таблицу в базе данных, если она не является моделью Django?

    как объединить два подсписок, разделяющих какое-то общее число?

    Python: преобразование кадров GIF в PNG

    Python 2.6: параллельный синтаксический анализ с urllib2

    Python для родителя / дочернего JSON

    Python: искрообразование потоком пиши в kafka, повторное использование соединения производителя kafka

    Фляжка-sqlalchemy backref не работает

    Как получить координаты графика, нарисованного определенным алгоритмом компоновки в графическом инструменте?

    Как использовать декораторы Python для проверки аргументов функции?

    Запуск кода в консоли PyCharm

    Изменение переменной внутри метода с помощью другого метода внутри него

    Изменить путь Python только для Python3

    Python - лучший язык программирования в мире.