翻译文本变量,然后将其放在 tkinter 标签中
Translate text-variable, then place it in tkinter label
我正在使用 python 开发一个非常基本的翻译应用程序。本质上,它会将您输入到输入框中的任何内容替换为一些字母(例如,将 "a" 变为 "u"),然后将其显示为标签。不幸的是,您输入的单词永远不会被翻译,它只是保持原样。控制台中没有出现错误。这是应该执行此操作的代码:
eword = StringVar()
Entry1 = Entry(root, textvariable=eword, width=30, bg="lightgrey").place(x=250, y=155)
def translate(eword):
translation = ""
for letter in eword:
if letter in "a":
translation = translation + "e"
elif letter in "m":
translation = translation + "n"
else:
translation = translation + letter
return translation
def doit():
text = eword.get()
label3 = Label(root, text=text, font=("Arial", 20), bg="white").place(x=195, y=300)
return
我是 python 的绝对初学者,所以请简单地解释一下。
我对布局进行了一些修改,并为它添加了必要的代码 运行。
StringVar 不是普通的字符串。要读取它的值,您需要使用方法 get()
,要写入它,您需要使用 set()
。
当您创建条目时:Entry1 = Entry(root, ...).place(x=250, y=155)
变量 Entry1
将获得值 None
,因为这就是 place()
returns。我已将条目的创建与 window 上的放置分开。另外,我使用 pack()
而不是 place()
.
我添加了一个按钮来启动翻译,因为我在您的代码中找不到任何机制。按钮在按下时调用函数 translate()
。
from tkinter import *
root = Tk() # Application main window
root.geometry('300x200') # Setting a size
eword = StringVar()
entry1 = Entry(root, textvariable=eword, width=30)
entry1.pack(pady=20) # Pack entry after creation
def translate():
original = eword.get() # Read contents of eword
translation = ""
for letter in original:
if letter in "a":
translation = translation + "e"
elif letter in "m":
translation = translation + "n"
else:
translation = translation + letter
new_text.set(translation) # Write translation to label info
action = Button(root, text='Translate', command=translate)
action.pack() # Pack button after creation
new_text = StringVar()
info = Label(root, textvariable=new_text)
info.pack(pady=20)
root.mainloop()
您可以使用 replace()
:
而不是遍历字符串
original.replace('a', 'e')
original.replace('m', 'n')
您可能还想研究字符串函数 translate()
:)
我正在使用 python 开发一个非常基本的翻译应用程序。本质上,它会将您输入到输入框中的任何内容替换为一些字母(例如,将 "a" 变为 "u"),然后将其显示为标签。不幸的是,您输入的单词永远不会被翻译,它只是保持原样。控制台中没有出现错误。这是应该执行此操作的代码:
eword = StringVar()
Entry1 = Entry(root, textvariable=eword, width=30, bg="lightgrey").place(x=250, y=155)
def translate(eword):
translation = ""
for letter in eword:
if letter in "a":
translation = translation + "e"
elif letter in "m":
translation = translation + "n"
else:
translation = translation + letter
return translation
def doit():
text = eword.get()
label3 = Label(root, text=text, font=("Arial", 20), bg="white").place(x=195, y=300)
return
我是 python 的绝对初学者,所以请简单地解释一下。
我对布局进行了一些修改,并为它添加了必要的代码 运行。
StringVar 不是普通的字符串。要读取它的值,您需要使用方法 get()
,要写入它,您需要使用 set()
。
当您创建条目时:Entry1 = Entry(root, ...).place(x=250, y=155)
变量 Entry1
将获得值 None
,因为这就是 place()
returns。我已将条目的创建与 window 上的放置分开。另外,我使用 pack()
而不是 place()
.
我添加了一个按钮来启动翻译,因为我在您的代码中找不到任何机制。按钮在按下时调用函数 translate()
。
from tkinter import *
root = Tk() # Application main window
root.geometry('300x200') # Setting a size
eword = StringVar()
entry1 = Entry(root, textvariable=eword, width=30)
entry1.pack(pady=20) # Pack entry after creation
def translate():
original = eword.get() # Read contents of eword
translation = ""
for letter in original:
if letter in "a":
translation = translation + "e"
elif letter in "m":
translation = translation + "n"
else:
translation = translation + letter
new_text.set(translation) # Write translation to label info
action = Button(root, text='Translate', command=translate)
action.pack() # Pack button after creation
new_text = StringVar()
info = Label(root, textvariable=new_text)
info.pack(pady=20)
root.mainloop()
您可以使用 replace()
:
original.replace('a', 'e')
original.replace('m', 'n')
您可能还想研究字符串函数 translate()
:)