Я немного изменил макет и добавил необходимый код для его запуска.
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()
:
original.replace('a', 'e')
original.replace('m', 'n')
Возможно, вы захотите изучить и строковую функцию translate()
:)