話不多說,直接上代碼。
Component文件:
# coding:utf-8 from tkinter import * from tkinter import ttk from tkinter import scrolledtext import tkinter.messagebox # 作者:C丶小明 # 博客園地址:https://www.cnblogs.com/mingmingming/ url = "請選擇" class Comp: def __init__(self,master): self.master = master def label(self,properties,padx = 3,pady = 2,ipadx = 5,ipady = 1): for name,x,y in properties: self.label = Label(self.master,text = name) self.label.grid(row = x,column = y,padx = padx,pady = pady,ipadx = ipadx,ipady = ipady) def entry(self,properties,padx = 3,pady = 2,ipadx = 5,ipady = 1,columnspan = 4,sticky = N): self.boxes = [] for width,insert,x,y in properties: self.entry = Entry(self.master,width = width) self.entry.insert(END,insert) self.entry.grid(row = x,column = y,columnspan = columnspan,padx = padx,pady = pady,ipadx = ipadx,ipady = ipady,sticky = sticky) self.boxes.append(self.entry) def get_entry(self): self.get_data = [] for box in self.boxes: self.data = box.get() self.get_data.append(self.data) return self.get_data def button(self,properties,padx = 1,pady = 2,ipadx = 2,ipady = 1): for text,x,y,command in properties: self.button = Button(self.master,text = text,command = command) self.button.grid(row = x,column = y,padx = padx,pady = pady,ipadx = ipadx,ipady = ipady) def button_cancel(self): self.master.destroy() def scrolledtext(self,width,height,x,y,padx = 8,pady = 8,ipadx = 5,ipady = 1): self.scrolledtext = scrolledtext.ScrolledText(self.master,width = width,height = height) self.scrolledtext.grid(row = x,column = y,columnspan = 5,padx = padx,pady = pady,ipadx = ipadx,ipady = ipady) def scrolledtext_insert(self,getdata_function): #for data in getdata_function: self.scrolledtext.insert(END,getdata_function) def scrolledtext_delete(self): #for data in getdata_function: self.scrolledtext.delete('1.0', 'end') def combobox(self,values,x,y,width = 35,columnspan = 5,padx = 3,pady = 1,ipadx = 5,ipady = 1,sticky = N): self.select = ttk.Combobox(self.master,width = width,state = 'readonly') # 初始化 self.select['values'] = (values) # 選項 # 處理事件 def combobox_trigger(*args): global url url = self.select.get() #獲取選中的值 self.select.set(url) # 下拉框提示文字 #self.select.current(0) # 默認選項 self.select.bind("<<ComboboxSelected>>",combobox_trigger) # 選擇觸發事件 self.select.grid(row = x, column = y,columnspan = columnspan,padx = padx,pady = pady,ipadx = ipadx,ipady = ipady,sticky = sticky) return url def messagebox(self , features , check1 , check1_return): if check1 in features: tkinter.messagebox.showinfo('提示',check1_return) else: tkinter.messagebox.showwarning('提示','新增失敗!') def radiobutton(self,properties,sticky = W): var = IntVar() for text,x,y,value in properties: radiobutton = Radiobutton(self.master, text= text, variable = var, value = value) radiobutton.grid(row = x,column = y ,columnspan = 4,sticky = sticky) radiobutton.flash() if __name__ == "__main__": kk = Tk() c = Comp(kk) c.combobox(("select1","select2"),1,0) kk.mainloop()
TranslationTools文件,翻譯小工具的主要部分:
# -*- coding: utf-8 -*- from docx import Document from tkinter import * from googletrans import Translator import tkinter.filedialog import Component # 作者:C丶小明 # 博客園地址:https://www.cnblogs.com/mingmingming/ class Tr: def __init__(self): self.main = Tk() self.mainwindow = Component.Comp(self.main) self.main.geometry('430x400') self.main.title(u"翻譯工具 作者:C丶小明") self.main.resizable(width=False,height=False) self.translator = Translator(['translate.google.cn']) def returnselect(self): all_url = ("zh-CN","en") url = self.mainwindow.combobox(("zh-CN","en"),0,1,pady = 25) return False if url == "請選擇" else url def interface(self): # 文本 self.mainwindow.label([ ("翻譯語言:",0,0), ("選擇文檔路徑:",1,0), ("文檔行數:",2,0), ("翻譯文檔位置:",3,0), ]) # 下拉列表 Language = self.mainwindow.combobox(("zh-CN","en"),0,1,pady = 25) path = StringVar() def selectPath(): # 文件選擇框 path_ = tkinter.filedialog.askopenfilename(filetypes=[("",".docx")]) # path = StringVar() 配合使用,更新顯示地址 path.set(path_) # 選擇文檔的路徑 t = path_ # 打開文檔,空白為新建文檔 new_word = Document() document = Document(t) sum_row = len(document.paragraphs) Label(self.main,text = sum_row).grid(row = 2,column = 1,padx = 8) # 循環讀取段落 for i in document.paragraphs: # 讀取內容,進行翻譯 word_text = self.translator.translate(i.text, dest=self.returnselect()).text # 翻譯內容寫入文檔 new_word.add_paragraph(word_text) newpath = r"F:\翻譯文檔.docx" new_word.save(newpath) Label(self.main,text = newpath).grid(row = 3,column = 1) # 顯示選擇文件地址 Label(self.main,width =35,height = 3,wraplength = 230,textvariable = path).grid(row = 1,column = 1,padx = 8) # 按鈕 self.mainwindow.button([ ("選擇",1,2,selectPath) ],ipadx = 8,ipady = 1) self.main.mainloop() if __name__ == "__main__": t = Tr() t.interface()
運行結果: