#python #tkinter
Вопрос:
Я начинающий изучающий python и попытался создать простой шифр Цезаря с помощью tkinter. Однако мой код работает не совсем так, как я хочу.
всякий раз, когда я нажимаю кнопку «зашифровать», предполагается, что входные данные берутся из поля ввода, кодируются и отображаются в другом поле ввода. это действительно так, однако, если я продолжу его запускать и снова нажму «зашифровать», он все равно отобразит ранее отображенное сообщение.
код:
from tkinter import *
import sys
temp=[]
##parent window
root=Tk()
root.geometry("235x80")
root.title("cipher")
##button press function for encryption
def epress():
try:
message=entry.get()
key = int(entryk.get())
for i in message:
letter = ord(i)
if letter == 32:
letter = letter - key
letter = letter key
letter = chr(letter)
temp.append(letter)
letter="".join(temp)
dword.set(letter)
except:
dword.set("error")
##button press function for decryption
def dpress():
try:
message=entry.get()
key = int(entryk.get())
for i in message:
letter = ord(i)
if letter == 32:
letter = letter key
letter = letter - key
letter = chr(letter)
temp.append(letter)
letter="".join(temp)
dword.set(letter)
except:
dword.set("error")
dword = StringVar()
display = Entry(root,textvariable=dword,bg="white")
ebtn = Button(root,text="encrypt",command = lambda: epress())
dbtn = Button(root,text="decrypt",command = lambda: dpress())
entry = Entry(root)
entryk = Entry(root)
label = Label(root,text="message:")
labelk = Label(root,text="key:")
display.grid(columnspan=15, ipadx=70)
ebtn.grid(row=2, column = 2)
dbtn.grid(row=3,column=2)
label.grid(row=2,column=0)
labelk.grid(row=3,column=0)
entry.grid(row=2,column=1)
entryk.grid(row=3,column=1)
Комментарии:
2. он должен только прочитать поле ввода и отредактировать дисплей, чтобы показать только то, что я думаю. фотографии для справки: gofile.io/d/84m3GN
3. если бы он должен был считывать только поле ввода, то разве пользователю не нужно было бы вручную перемещать некогда зашифрованный текст из поля вывода в поле ввода?
4. Ваше название должно описывать конкретную проблему, а не говорить о том, насколько она проста. Цель состоит в том, чтобы другие люди, увидев название, узнали, есть ли у них та же проблема, и могли бы извлечь уроки из ответов на ваш вопрос.
5. спасибо, Чарльз Даффи, мне очень жаль