Я пытаюсь создать программу шифрования на основе графического интерфейса, используя tkinter
на python3
. Здесь один из вариантов - зашифровать изображение, теперь есть поле ввода, в которое пользователь войдет в режим, 1 для RGB и 0 для оттенков серого. Теперь я пытаюсь передать это значение поля ввода в функцию шифрования и дешифрования, которая будет выполняться при нажатии соответствующей кнопки. Но я получаю сообщение об ошибке при передаче значения функции. Сценарий, в котором написаны кнопки и поле ввода, следующим образом:
global mode
def getvalue():
mode =int(mode_txt.get())
return mode
image_window = Tk()
image_window.geometry ( '350x200' )
image_window.title ('Image Cryptography')
lbl1 = Label(image_window, text = "Select mode(0 for greyscale/ 1 for RGB): " ).place( x=20, y=40 )
mode_txt = IntVar
mode_txt = Entry(image_window, width = 4) #the entry field
mode_txt.place(x= 300, y=40)
mode_txt.bind('<Return>', getvalue)
mode_txt.pack()
Теперь я передаю mode
вот так:
def encrypt():
mode = getvalue()
if(mode == 0): #greyscale
#some code#
Кнопки такие:
btn_decrypt = Button( image_window, text = "Image Decryption", command = decrypt)
btn_decrypt.place( x=20, y=100 )
btn_encrypt = Button( image_window, text = "Image Encryption", command = encrypt)
btn_encrypt.place( x=200, y=100 )
btn_exit = Button( image_window, text = "Go Back" , command = goback).place( x=140, y=150 )
image_window.mainloop()
Я получаю ошибку:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib64/python3.7/tkinter/__init__.py", line 1705, in __call__
return self.func(*args)
File "image1.py", line 98, in decrypt
if(mode == 0):
NameError: name 'mode' is not defined
Я не знаю, куда я иду не так? Любая помощь будет оценена. Спасибо.