2014-06-12 25 views
3

我正在用gui製作一個使用Tkinter及其文本部件的python程序,我使用的是python 2.7.3和Ubuntu 14.04.Tkinter文本部件有時不會註冊死鎖(^`「)

我使用的是「加拿大多語種」鍵盤佈局在這裏看到:http://charsetplus.tripod.com/Keyboard/Latin/ENFR-CAN.htm

當我創建的文本小,一切工作正常最低工作例如:

from Tkinter import * 
root=Tk() 
text_widget=Text(root) 
text_widget.pack() 
root.mainloop() 

我可以再鍵入死區鍵和重音字符沒有問題,以及沒有字母的重音符通過鍵入兩次死鎖或「死鑰匙+空格」;例如^¨

但是,如果我執行我的程序中的功能或切換到其他程序,然後回到我的文本小部件,我不能再輸入死鎖。

我的程序是以數學爲導向的,基於LaTeX,所以旋轉字符^非常重要。

到目前爲止,我的解決方法已對文本小「控制-H」(對於帽子)綁定到插入的文本插件的正確的字符函數:

self.text_widget.bind('<Control-h',self.circumflex) 
# [...] 
def circumflex(self,event): 
    event.widget.insert(INSERT,'^^') 

這工作,但很煩人,而且顯然不夠優雅。

任何幫助解決這個問題將不勝感激!

謝謝!

回答

1

當使用其他輸入法而不是XIM時,似乎是一個問題。

開有關於這個問題(特別是具有這樣一句:https://code.google.com/p/ibus/issues/detail?id=526)大量的bug

一種解決方法是TK任何調用之前停用任何其他輸入法:

os.environ['XMODIFIERS'] = "@im=none" 
+0

此表現的很出色。非常感謝你! – FamilyGuy