Я пытаюсь создать программу шифрования Цезаря с помощью tkinter, когда я пытаюсь преобразовать запись пользователя из строки в Int, я получаю эту ошибку: AttributeError: объект «str» не имеет атрибута «_root». Я уже пробовал использовать stextentry = int(stextentry) и знаю, что это работает, но мне нужно использовать другую версию этой строки кода, чтобы этот скрипт работал в другой программе. Я не знаю, как избавиться от ошибки, поэтому я надеюсь, что кто-нибудь может мне помочь, кстати, это не домашнее задание и не имеет ничего общего со школой.
from tkinter import *
def Encryption():
ptextentry = ptext.get()
stextentry = stext.get()
stextentry = IntVar(stextentry)# <------------------- Error is here
alpha = "abcdefghijklmnopqrstuvwxyz"
cipher = " "
for c in ptextentry:
if c in alpha:
cipher += alpha[(alpha.index(c)+stextentry) % (len(alpha))]
print (cipher)
global P_Text_E, P_Text_L, S_K_L, S_K_E, plain_text, cctk
cctk = Tk()
ptext = StringVar()
stext = StringVar()
P_Text_L = Label(cctk, text="Enter plain text:").grid(row=0, column=0)
P_Text_E = Entry(cctk, textvariable=ptext).grid(row=0, column=1)
S_K_L = Label(cctk, text="Enter shift key:").grid(row=1, column=0)
S_K_E = Entry(cctk, textvariable=stext).grid(row=1, column=1)
Encrypt_B = Button(cctk, text="Encrypt plain text", command = Encryption).grid(row=2, columnspan =3)
Exit_cctk_B = Button(cctk, text="Exit").grid(row=3, columnspan =3)
cctk.title("Caesar Cipher Program")
cctk.mainloop()**
global
не создает глобальных переменных. Все переменные, созданные вне функций/классов, автоматически становятся глобальными. Вы используете внутреннюю функциюglobal
, чтобы сообщить функции, что вы хотите использовать внешнюю переменную вместо создания локальной переменной. - person furas   schedule 12.12.2016