Я переношу приложение Python Tkinter из Linux в Mac OS X Mavericks.Место события ключевого события Python Tkinter потеряно в MacOS
В части приложения у меня есть холст, и пользователь использует нажатия клавиш для выполнения действий - например, нажатие «z» заставляет изображение увеличивать курсор. Это означает, что мне нужно знать, где находится мышь, когда нажата клавиша. В Linux это не проблема, потому что event.x
и event.y
правильно дать координаты окна, где была нажата клавиша, например:
skdisp.bind('p',(lambda event : skdisp.pan(event)))
где skdisp.pan(event)
(очевидно) метод, панорамирование дисплей.
Это нормально работает под Linux, но в MacOS ключевые события не вернут правильные координаты курсора - event.x
и event.y
имеют небольшие постоянные отрицательные значения.
Вот небольшой пример, который воспроизводит эту проблему:
#!/usr/bin/env python
"""Put up a tiny gui and report window coordinates at which
user types a letter."""
from Tkinter import *
root = Tk()
prompt = ' Press any letter '
label1 = Label(root, text=prompt, width=len(prompt), bg='white')
label1.pack()
def key(event):
msg = "event xy %d %d" % (event.x, event.y)
label1.config(text=msg)
root.bind_all('<Key>', key)
root.mainloop()
В системе Linux, по мере ввода букв в окно, координаты мыши вторит на дисплее, но Mac не делает этого.
Спасибо - мой самый первый пост в стойке, поэтому, пожалуйста, будьте нежны!
Bryan -Ваш обходной путь работает отлично. Ты спас мне много хлопот - спасибо ОЧЕНЬ много! – user3263972