python 字符转unicode码+pyqt5界面实现

有天学长问我能不能搞个汉字转Unicode码(学长在搞字体),我就上班摸鱼学了下字符转unicode(就两行),保持着良好的态度我顺便在摸鱼的时候学习了下pyqt5怎么用,然后摸鱼写好了程序.

汉字转unicode码代码如下

outText = text.encode("unicode_escape")
outText = outText.decode("utf-8")

unicode码转汉字代码如下

unicode = unicode.encode('utf-8')
unicode = unicode.decode("unicode_escape")

这个转换我参考的是链接1

# -*- coding: utf-8 -*-
"""
Created on Wed Nov  7 11:43:34 2018

@author: bmi
"""

import sys
from PyQt5.QtWidgets import (QWidget, QLabel, QLineEdit,
    QTextEdit, QGridLayout, QApplication, QPushButton)

class Gui(QWidget):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
    def initUI(self):
        
        input = QLabel("输入")
        output = QLabel("unicode")
        fre = QLabel("字符频率")
        
        self.inputEdit = QTextEdit()
        self.outputEdit = QTextEdit()
        self.freEdit = QTextEdit()
        char2unicodebtn = QPushButton('unicode')
        unicode2charbtn = QPushButton('char')
        
        grid = QGridLayout()
        grid.setSpacing(5)
        
        grid.addWidget(input, 1, 0)
        grid.addWidget(self.inputEdit, 1, 1, 2, 1)
        
        grid.addWidget(output, 3, 0)
        grid.addWidget(self.outputEdit, 3, 1, 2, 1)
        
        grid.addWidget(fre, 5, 0)
        grid.addWidget(self.freEdit, 5, 1, 2, 1)
        grid.addWidget(char2unicodebtn, 6,0)
        grid.addWidget(unicode2charbtn, 7,0)
        
        self.setLayout(grid)
        
        char2unicodebtn.clicked.connect(self.Char2Unicode)
        unicode2charbtn.clicked.connect(self.Unicode2Char)

        self.setGeometry(300, 300, 400, 500)
        self.setWindowTitle('unicode(芥末诚专用) by bmi')
        
        self.show()
    #汉字转unicode码
    def Char2Unicode(self):
        text = self.inputEdit.toPlainText()
        
        strlen = len(text)
        
        outText = text.encode("unicode_escape")
        outText = outText.decode("utf-8")
        outText = outText.replace("\\u", ",$")
        self.outputEdit.setText(outText)
        
        
        dfre = {}#存放单个字符出现频率
        for i in range(0, strlen):
            dfre[text[i]] = 0
            for j in range(0,strlen):
                if text[i] == text[j]:
                    dfre[text[i]] += 1
        temp = ''
        dchar = {}
        for key in dfre.keys():
            temp = key
            s = temp.encode("unicode_escape")
            s = s.decode("utf-8")
            s = s.replace("\\u", ",$")
            dchar[key] = s
            
        s = "输入字数:%d\n"%(strlen)
        for key in dfre.keys():
            s += "%s:%d  %s\n"%(key,dfre[key],dchar[key])
            #self.outputEdit.append("%s"%d[key])
        self.freEdit.setText(s)

	#unicode码转汉字按钮
    def Unicode2Char(self):
        text = self.inputEdit.toPlainText()
        unicode = text.replace("$", "\\u")
        unicode = unicode.encode('utf-8')
        unicode = unicode.decode("unicode_escape")
        self.outputEdit.setText(unicode)
        
        strlen = len(unicode)
        dfre = {}
        for i in range(0, strlen):
            dfre[unicode[i]] = 0
            for j in range(0,strlen):
                if unicode[i] == unicode[j]:
                    dfre[unicode[i]] += 1
        
        s = "输入字数:%d\n"%(strlen)
        for key in dfre.keys():
            s += "%s:%d\n"%(key,dfre[key])
            #self.outputEdit.append("%s"%d[key])
        self.freEdit.setText(s)
        
        
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    unicodeGui = Gui()
    sys.exit(app.exec_())
        

效果图如下
unicodeGui
我发给学长测试了下,发现对扩展B的处理有问题,学长让我把字符频率改成一个按钮,他一次性需要转换的字挺多的,转换存在字符频率会出现卡顿,下次上班的摸鱼的时候再改吧(滑稽)。
参考连接:
连接1:python3 汉字转十六进制unicode
连接2:主页 Archi
连接3:PyQt5图形界面编程(目录)
连接4:Python 的图形界面(GUI)编程?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值