вероятно, очень простая проблема с python (tkinter)

#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)

 


кроме того, я уверен, что все усложнил и сделал другие вещи неправильно, поэтому, пожалуйста, поделитесь

Комментарии:

1. похоже, что при втором нажатии вы читаете исходное поле ввода, когда хотите подготовить поле вывода. это правда?

2. он должен только прочитать поле ввода и отредактировать дисплей, чтобы показать только то, что я думаю. фотографии для справки: gofile.io/d/84m3GN

3. если бы он должен был считывать только поле ввода, то разве пользователю не нужно было бы вручную перемещать некогда зашифрованный текст из поля вывода в поле ввода?

4. Ваше название должно описывать конкретную проблему, а не говорить о том, насколько она проста. Цель состоит в том, чтобы другие люди, увидев название, узнали, есть ли у них та же проблема, и могли бы извлечь уроки из ответов на ваш вопрос.

5. спасибо, Чарльз Даффи, мне очень жаль