将字母映射到Tkinter中的图片

时间:2014-11-28 12:41:27

标签: python dictionary tkinter

我正在Tkinter中编写一个程序(我也在使用PIL),python,即将“克罗地亚语”中输入的单词“翻译”为“Glgoljica”。 glagoljica是一个古老的克罗地亚字母,看起来像这样:

croatian alphabet

所以我想知道是否有办法用Tkinter中的字典来解决这个问题?例如,我可以在glagoljica上映射字母“a”“与字母”a“on”glagoljica“,字母b与glagoljica上的字母”b“的图片,以便as和end-result用户获得完整的声明翻译在那个古老的克罗地亚字母上?

我想要的是算法,但只是将图片(而不是字符串)作为dict.keys()的值。

dict={}
dict["a"]="e"
dict
>>>{'a': 'e'}
dict["i"]="u"
word="ai"
string=""
for letter in word:
    if letter in dict:
        string+=dict[letter]    
>>> string
'eu'

1 个答案:

答案 0 :(得分:0)

大/小写的glagoljica字母表占据unicode块U + 2C00-U + 2C5F,其中U + 2C2F和U + 2C5F未定义。 Tkinter可以处理并根据您使用的系统和字体显示字符。不应该需要PIL。

如果您使用字典,则应将slavic字符映射到glagoljica字符。

glag = {'\u0410':'\u2C00', '\u0410':'\u2c01',}  # etc
print('\u0410', glag['\u0410'])
# ('А', 'Ⰱ')

我在Win7上使用3.4.2使用Lucida Console。

但是,字符串转换不应使用显式循环,而应使用str.translate和str.maketrans中的表。

trans1 = str.maketrans(glag)
print('ААБАБ'.translate(trans1))
#'ⰁⰁБⰁБ'

有了这个,就不需要dict对象。

trans2 = str.maketrans('АБ', 'ⰁБ')  # could enter with \u excapes
print('ААБАБ'.translate(trans1))
#'ⰁⰁБⰁБ'