Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 翻译文本变量,然后将其放置在tkinter标签中_Python_User Interface_Tkinter_Translate - Fatal编程技术网

Python 翻译文本变量,然后将其放置在tkinter标签中

Python 翻译文本变量,然后将其放置在tkinter标签中,python,user-interface,tkinter,translate,Python,User Interface,Tkinter,Translate,我正在使用python开发一个非常基本的翻译应用程序。基本上,它将您输入的任何内容输入到输入框中,替换一些字母(例如,将“a”变成“u”),然后将其显示为标签。不幸的是,您输入的单词从未被翻译,它只是保持原样。控制台中不会出现任何错误。下面是应该执行此操作的代码位: eword = StringVar() Entry1 = Entry(root, textvariable=eword, width=30, bg="lightgrey").place(x=250, y=155) def tran

我正在使用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()
返回的值。我已将条目的创建与窗口上的放置分开。另外,我使用的是
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()
,而不是在字符串中循环:


您可能还需要研究字符串函数
translate()
:)

我对布局做了一些修改,并添加了运行所需的代码

StringVar不是普通字符串。要读取它的值,需要使用方法
get()
,要写入它,需要使用方法
set()

创建条目时:
Entry1=entry(root…).place(x=250,y=155)
变量
Entry1
将获得值
None
,因为这就是
place()
返回的值。我已将条目的创建与窗口上的放置分开。另外,我使用的是
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()
,而不是在字符串中循环:


您可能还想研究字符串函数
translate()
:)

太棒了,我已经有了一个按钮,只是不想发布我的全部代码。另外,我以后如何在GUI上显示它,我是否只在translate函数的末尾添加一个标签?我用标签更新了我的答案。我正在通过与标签关联的
StringVar()
将翻译分配给函数末尾的标签。太棒了,我已经有了一个按钮,只是不想发布我的全部代码。另外,我以后如何在GUI上显示它,我是否只在翻译函数的末尾添加一个标签?我用标签更新了我的答案。我通过与标签关联的
StringVar()
将翻译分配给函数末尾的标签。