3

我正在使用 Tkinter 及其 Text 小部件制作一个带有 gui 的 python 程序。我正在使用 python 2.7.3 和 Ubuntu 14.04。

我正在使用“加拿大多语言”键盘布局,如下所示:http: //charsetplus.tripod.com/Keyboard/Latin/ENFR-CAN.htm

当我创建文本小部件时,一切正常。最小工作示例:

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

然后,我可以通过键入两次死键或“死键+空格”来毫无问题地键入死键和重音字符以及下面没有字母的重音;例如 ^ ¨

但是,如果我在我的程序中执行功能或切换到其他程序然后返回到我的文本小部件,我就不能再键入死键了。

我的程序是面向数学的并且基于 LaTeX,所以抑扬符 ^ 非常重要。

到目前为止,我的解决方法是将文本小部件上的“Control-h”(用于帽子)绑定到在文本小部件中插入正确字符的函数:

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

这可行,但很烦人,而且显然不优雅。

任何解决此问题的帮助将不胜感激!

谢谢!

4

1 回答 1

1

当使用 XIM 以外的其他输入法时,这似乎是一个并发问题。

关于这个问题有很多错误打开(特别是这个:https ://code.google.com/p/ibus/issues/detail?id=526 )

一种解决方法是在调用 tk 之前停用任何其他输入法:

os.environ['XMODIFIERS'] = "@im=none"
于 2014-06-13T15:17:54.143 回答