2020年人工神經網絡第二次作業
793
2022-05-30
一萬點暴擊傷害
人懶起來太可怕了,放了個十一充分激發了我的惰性。然后公眾號就這么停了半個月,好慚愧…
新學期兒子的幼兒園上線了APP,每天作業通過app布置后,家長需要陪著孩子學習,并上傳視頻才算完成作業。來看看今天的課后作業吧:
看到最后的千字文,我就瞬間崩潰了,別說教孩子,我自己都一堆字不認識。老婆就是因為很多字需要手機查嫌麻煩,才把輔導孩子的任務甩給了我。平時我們中英文翻譯的時候,經常使用百度翻譯,那么今天我們使用Python來做一個自動注音的GUI工具吧!
Python的拼音模塊
Python的模塊庫API,每次進去習慣第一動作,就是右鍵翻譯為中文。可Python的拼音模塊不需要這么做,因為涉及拼音等模塊肯定和中文有關系,文檔自然是中文的嘍。
那么Python的拼音模塊是什么? pypinyin
特性
根據詞組智能匹配最正確的拼音。
支持多音字。
簡單的繁體支持, 注音支持。
支持多種不同拼音/注音風格。
安裝
pip install pypinyin
使用示例
>>> from pypinyin import pinyin, lazy_pinyin, Style
>>> pinyin('中心')
[['zhōng'], ['xīn']]
>>> pinyin('中心', heteronym=True) ?# 啟用多音字模式
[['zhōng', 'zhòng'], ['xīn']]
>>> pinyin('中心', style=Style.FIRST_LETTER) ?# 設置拼音風格
[['z'], ['x']]
>>> pinyin('中心', style=Style.TONE2, heteronym=True)
[['zho1ng', 'zho4ng'], ['xi1n']]
>>> pinyin('中心', style=Style.BOPOMOFO) ?# 注音風格
[['ㄓㄨㄥ'], ['ㄒㄧㄣ']]
>>> pinyin('中心', style=Style.CYRILLIC) ?# 俄語字母風格
[['чжун1'], ['синь1']]
>>> lazy_pinyin('中心') ?# 不考慮多音字的情況
['zhong', 'xin']
# Python 3(Python 2 下把 '中心' 替換為 u'中心' 即可):
tkinter的寬與高
from tkinter import *
def center_window(width, height):
screenwidth = root.winfo_screenwidth()
screenheight = root.winfo_screenheight()
size = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
root.geometry(size)
root = Tk()
center_window(700, 700)
root.mainloop()
上面是一個tkinter設置程序居中的簡單代碼,其中700 700為寬高的px值,在這里沒什么問題,但寬高一直都是px值么?
答案是否定的!
Text(frame, width=80, height=20, borderwidth=2, font=('黑體', '11'))
當我們使用Text文本標簽時,width和height代表的是容納字符的長度與高度。這里width代表設置80個字符的寬度,height為20個字符的高度。
程序實現
讓我們先來看看實現效果吧:
界面設計
GUI的界面比較簡單,只需要有一個用戶文本輸入,翻譯按鈕,結果輸出即可。
可以看到說明、待注音漢字、執行結果都通過LabelFrame
整體代碼
# -*- coding: utf-8 -*-
# @Author ? : 王翔
# @WeChat ? : King_Uranus
# @公眾號 ? ?: 清風Python
# @GitHub ? : https://github.com/BreezePython
# @Date ? ? : 2019/10/10 23:19
# @Software : PyCharm
# @version ?:Python 3.7.3
# @File ? ? : WordsToPinyin.py
from tkinter import *
from pypinyin import pinyin
class WordsToPinyin:
def __init__(self, master=None):
self.root = master
self.user_input = None
self.translation = None
def create_frame(self, text_info):
frame = LabelFrame(self.root, text=text_info, font=('黑體', '11'), fg='red')
frame.grid(padx=10, pady=10, sticky=NSEW)
return frame
def notice(self):
frame = self.create_frame('說明')
info = "歡迎使用【清風Python】漢語注音工具\n請將待注音的漢字或句子,填寫在下方的文本框內"
note = Label(frame, text=info, justify=LEFT, font=('黑體', '11'))
note.grid(sticky=EW)
def user_words(self):
frame = self.create_frame('待注音漢字')
self.user_input = Text(frame, width=80, height=10, borderwidth=2, font=('黑體', '11'))
self.user_input.grid(padx=10, pady=5)
@staticmethod
def split_words(words):
word_list = ""
tmp = ""
for string in words:
if len(bytes(string, 'utf-8')) == 3 and len(string) == 1:
if tmp != '':
word_list += tmp.ljust(6)
tmp = ""
word_list += string.ljust(5)
else:
tmp += string
return word_list
def translate(self):
self.translation.delete(0.0, END)
total_info = ''
info = self.user_input.get(1.0, END).split('\n')
for line in info:
if not line:
continue
a = self.split_words(line)
total_info += ''.join(map(lambda x: x[0].ljust(6), pinyin(line))) + '\n'
total_info += a + '\n'
self.translation.insert(1.0, total_info)
def start_translate(self):
b = Button(self.root, text='開始注音', width=15, command=self.translate)
b.grid()
def result_info(self):
frame = self.create_frame('執行結果')
self.translation = Text(frame, width=80, height=20, borderwidth=2, font=('黑體', '11'))
self.translation.grid(padx=10, pady=5)
if __name__ == '__main__':
def center_window(width, height):
screenwidth = root.winfo_screenwidth()
screenheight = root.winfo_screenheight()
size = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
root.geometry(size)
root = Tk()
center_window(700, 700)
root.resizable(width=False, height=False)
root.title('清風Python--漢字注音工具')
Main = WordsToPinyin(root)
Main.notice()
Main.user_words()
Main.start_translate()
Main.result_info()
root.mainloop()
程序打包
為了之后使用方便,我們可以通過pyinstaller將小程序打包成exe工具,這樣就可以在電腦上直接使用了!
The End
本文來自“清風Python”公眾號
歡迎關注!
python
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。