【问题标题】:Python googletrans returns only one wordPython googletrans 只返回一个单词
【发布时间】:2020-08-02 11:56:03
【问题描述】:

我使用 tkinter 和 googletrans 制作了一个翻译应用程序

但是当我运行它时,googletrans 只返回 1 个单词 这是我的完整代码(main.py)

#Importing modules
from tkinter import *
from googletrans import Translator

##Main Script
#Main Window
Window = Tk()
Window.geometry("400x700")
Window.resizable(False, False)
Window.configure(bg="#e1f4f3")

#Defs
def translate():
    ans = inp.get(1.0)
    trans = Translator()
    t = trans.translate(
        ans, src="id", dest="en"
    )

    trans_txt.config(state="normal")
    trans_txt.delete(END, "end")
    trans_txt.insert(END, t.text)
    trans_txt.config(state="normal")

#Widgets
#main frame
main = Frame(Window, width=300, height=500, bg="#00d1ff", bd=0, highlightthickness=0)

#entries
#input user
inp = Text(main, bd=0, highlightthickness=0, font=("Gotham Book", 20))
inp.pack_propagate(0)

#translate btn
translate_btn = Button(main, bd=0, highlightthickness=0, font=("Gotham Book", 20), text="Translate", command=translate)
translate_btn.configure(highlightbackground="light blue")
translate_btn.pack_propagate(0)

#translation
trans_txt = Text(main, bd=0, highlightthickness=0, font=("Gotham Book", 20))
trans_txt.config(state="disabled")
trans_txt.pack_propagate(0)

#Packs
main.place(anchor="c", rely=.5, relx=.5)

inp.place(x=150, anchor="c", y=100, height=90, width=250)
translate_btn.place(x=150, anchor="c", y=250)
trans_txt.place(x=150, anchor="c", y=400, height=90, width=250)

#Window.mainloop()
Window.mainloop()

main.py 返回

H

当我输入“Hai”时。 在 inp 小部件中

但在另一个代码文件中(trans_test.py) 它返回正确的翻译词 这里是 trans_test.py 完整代码

#Importing modules
from googletrans import Translator

#trans()
def trans(text):
    trans = Translator()
    t = trans.translate(
        text, src="id", dest="en"
    )
    return t.text

#test
print(trans("Hai"))

trans_test.py 返回

Hi

如果有人回答这个问题,谢谢你:)

【问题讨论】:

标签: python tkinter google-translate


【解决方案1】:

你只得到h的原因是你的translate函数试图翻译h,即h。在ans = inp.get(1.0) 行,您只是在第 1 行和第 0 列获取字符,也就是 1.0,您需要通过 ans = inp.get(1.0, 'end') 获取完整的文本。

另外,如果您想完全删除文本,我想联系trans_txt.delete(END, "end"),那么您需要从 staring index 删除到 end index 所以它应该是。

trans_txt.delete(1.0, "end")

END"end" 是相同的值,不要混淆。

此外,如果您尝试将第二个文本小部件设为只读文本,那么您只需在插入后禁用该状态即可。

改进的translate 功能

def translate():
    ans = inp.get(1.0, 'end')
    trans = Translator()
    t = trans.translate(ans, src="id", dest="en")
    trans_txt.config(state="normal")
    trans_txt.delete(1.0, "end")
    trans_txt.insert(END, t.text)
    trans_txt.config(state="disabled")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    相关资源
    最近更新 更多