ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

对汉语有边界编码的词语编码的点击选择,tkinter,python

2021-10-25 12:31:50  阅读:137  来源: 互联网

标签:编码 tkinter 边界 python SELCN tag edw config


前很久,我用utf8的编码格式,把开源字典的一万多汉字,按照拼音重新排列,每个拼音都占有一些编码位置,每个汉字都处在某个拼音的辖域内。就像拼音输入法一样。象数组查找元素一样,先找到某拼音的首地址,然后按照字的偏移量,相加就是字的编码。
这里得到字的编码,是一个数字,把它弄成utf8格式。unicode也是数字,它们可以弄成utf8格式,那么我们自己的数字,也可以弄成utf8格式。有一种作法就是,数字→bin→从右边始,按六位截取→再补加上照应的"10"→
然后再按字节转换回来。
为了给汉语词语加上边界,数字→bin后,可以再左移2bit,这样就有了边界编码的空间。
一个汉字可以处在词语的左边界,中间,右边界,和独立(具有双边界)。分别用2,0,1,3表示。后面步骤和前面一样。
这样我们就有了带边界的汉字编码,然后解码,放到tkinter的text上,按编码冠以4不同的tag。
比如人为的短语(冬天来了),分别对应tg2,tg0,tg0,tg1,那么鼠标点击到上面,四个字背景应该统一变色。这就是(点击选择)。
代码如下,比如edw是一个编辑窗口。(如果你觉得有用,那么请点下赞)

##-----------------设置[边界] 和 [选择] tags
left_tag="2"
right_tag="1"
middle_tag="0"
iso_tag="3"   

edw.tag_config(left_tag, )
edw.tag_config(middle_tag, foreground = 'black')
edw.tag_config(right_tag, background = 'lightblue') #右
edw.tag_config(iso_tag, foreground = 'green') #右
edw.tag_config('SELCN',background = '#FCE28C') # 汉语选择-选择底色
#-----------------------------------------------------------------单击 选择 汉语词组
def ms_c(v):
    pos="@%d,%d" % (v.x,v.y)
    b=edw.index(pos)
    a1=edw.tag_prevrange(left_tag,b+"+1c")
    if a1!=() :
        c=edw.tag_nextrange(right_tag,a1[1])
        if c!=() and  edw.compare(c[1],">",b):
            return a1[0],c[1]
        else:
            return ()    
    else:
        return()
    
def cn_selection_range(v):
    r=ms_c(v)
    if r!=():
        start,end=r
        edw.tag_remove('SELCN', 1.0, start)
        edw.tag_add('SELCN', start, end)
        edw.tag_remove('SELCN', end, END)
        
edw.bind("<1>",cn_selection_range)        

在这里插入图片描述

标签:编码,tkinter,边界,python,SELCN,tag,edw,config
来源: https://blog.csdn.net/m0_52427882/article/details/120949634

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有