У меня есть простое приложение Tkinter, которое я написал, с несколькими кнопками внизу формы.Моя цель - следовать стандартному соглашению, заключающемуся в подчеркивании буквы на кнопке и связывании действия для этой буквы клавишей Alt (т. Е. Alt-s для «_S_ave»).
Я пытался сделатьпривязка корневого окна к «Alt-s», «Alt-KeyPress-s» и «Mod1-s», и ни одна из них не работает надежно.Иногда они запускаются, но, хотя у меня есть «return break» в моей функции события, буква «s» распространяется на виджет ввода.
Я считаю, что это проблема в Linux / X11 и Mod1 против обработки Altпотому что управляющие привязки клавиш работают согласованно.Я не смог найти ни одной наилучшей практики для решения этой проблемы, поэтому мое обращение здесь.
Может кто-нибудь поделиться, как заставить привязку клавиш Alt работать в Linux / X11?
** Обновлен с примером
from Tkinter import *
class GUI:
def __init__(self,root):
self.root = root
e = Entry(self.root)
e.grid(column=0,row=0)
b = Button(self.root, text="Save", underline = 0)
b.grid(column=0,row=1)
root.bind("<Alt-s>",self.save)
e.focus()
def save(self,event=None):
print("Hey, you pressed Alt-s!")
return "break"
root = Tk()
App = GUI(root)
print("At this point, pressing Alt-s places the s string in the entry widget, and doesn't trigger")
root.mainloop()
** Обновление 2
У меня было несколько рецензентов, дающих мне знать, что это работает в их системе, даже в Linux.Возможно, есть проблема с моим tiling wm или другой конфигурацией для X11, однако у меня не было проблем с использованием Alt с любыми другими приложениями X11 с графическим интерфейсом.
Я открыт для предложений по устранению неполадок.
** Обновление 3
Я проверял поведение с xmodmap, и кажется, что когда я назначаю Alt_R, привязки клавиш Tk перестают работать.События, о которых сообщает xev, соответствуют дословно, но поведение Tk меняется.До сих пор копаю.
** Обновление 4
Мр.Ланге в списке Tkinter нашел ссылку, которая помогает объяснить подобное поведение, в https://bbs.archlinux.org/viewtopic.php?id=58145.
Я внес это изменение в свой xmodmap, и теперь Alt работает, как и ожидалось.Я не могу объяснить, почему привязка Alt_R к mod4 повлияет на Alt_L, или почему это повлияет только на приложения Tk.
Спасибо.