我已經寫了一個簡單的Tkinter應用程序,在窗體底部有幾個按鈕。我的目標是按照在按鈕上加下劃線的標準慣例,並使用Alt鍵(即:「_S_ave」的Alt-s)綁定該字母的動作。將按鈕綁定到Alt按鍵?
我試着將一個根窗口綁定到「Alt-s」,「Alt-KeyPress-s」和「Mod1-s」,並且沒有一個可以可靠地工作。他們有時會開火,但即使我對事件功能有「返回休息」,「s」字母也會傳播到輸入窗口小部件。
我相信這是Linux/X11和Mod1與Alt處理的問題,因爲控制鍵綁定工作一致。我一直無法找到任何解決此問題的最佳實踐,因此我在此提出上訴。
有人可以分享如何獲得在Linux/X11工作的Alt鍵綁定?
**與樣本
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的工作。也許我的平鋪WM或X11的其他配置存在問題,但是我在使用Alt與任何其他X11 GUI應用程序時沒有問題。
我接受關於如何解決此問題的建議。
**更新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應用程序。
謝謝。
怎麼樣的一個片段,我們可以嘗試在那裏ALT不工作對於? – 2012-02-05 21:47:02
我以爲我會指出我正在使用平鋪WM AwesomeWM,並有權修改xmodmap到其他東西,但左側未經修改。 Emacs,Firefox,Openoffice和其他GUI應用程序通常會讀取Alt鍵。 – Demosthenex 2012-02-06 03:51:49
你的代碼在python 2.7.1的windows XP下工作正常。對不起,我再也無法提供幫助了,我手邊沒有一臺linux機器。 :/ 祝你好運。 – Symon 2012-02-06 20:23:21