小孩課后作業難?使用Python開發漢字注音小工具

      網友投稿 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')

      小孩課后作業難?使用Python開發漢字注音小工具

      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小時內刪除侵權內容。

      上一篇:什么是電子簽名?電子簽名有法律效力嗎?
      下一篇:Xcode 高級調試技巧
      相關文章
      亚洲亚洲人成综合网络| 久久影视国产亚洲| 久久精品国产亚洲AV网站| 国产亚洲一区区二区在线| 亚洲一级片免费看| 亚洲片国产一区一级在线观看 | 噜噜噜亚洲色成人网站| 亚洲码欧美码一区二区三区| 亚洲日本乱码卡2卡3卡新区| 亚洲国产精品白丝在线观看| 亚洲小说区图片区| 亚洲一区二区三区四区视频| 亚洲三级在线播放| 国产成人亚洲综合网站不卡| 亚洲综合色婷婷在线观看| 亚洲熟伦熟女专区hd高清| 亚洲日韩国产二区无码| 亚洲AV无码片一区二区三区| 在线观看亚洲电影| 亚洲精品国产精品乱码不卡| 久久久久国产成人精品亚洲午夜| 国产亚洲一区二区三区在线不卡| 国产日韩亚洲大尺度高清| 久久亚洲AV午夜福利精品一区| 婷婷亚洲久悠悠色悠在线播放| 亚洲一区二区影院| 亚洲国语在线视频手机在线| 日韩亚洲产在线观看| 亚洲精品一卡2卡3卡四卡乱码| 国产亚洲精品美女久久久久| 亚洲精品在线视频| 亚洲国产精品国自产拍AV| 亚洲伊人tv综合网色| 亚洲性色成人av天堂| 亚洲已满18点击进入在线观看| 亚洲国产成人综合精品| 亚洲乱亚洲乱少妇无码| 亚洲成AV人片在| 亚洲性猛交xx乱| 亚洲avav天堂av在线网毛片| 亚洲日韩中文在线精品第一|