程序在执行加密算法后在 python 中意外停止

Program stops unexpected in python after it does an encryption algorithm

所以我在python做了一个GUI和加密程序: 这是布局

layout=[[sg.Text('Enter message'),sg.Input(key='-IN-')],
    [sg.Text('Cryptation key'),sg.Input(key='-KEY-')],
    [sg.Text('Answer',key='-OUT-')],
    [sg.Button('OK'), sg.Button('EXIT')]
    ]

这是 while 循环:

while True:
event, values=window.read()
if event is None or event == 'EXIT':
    break
mesaj=str('-IN-').upper()
cheie=str('-KEY-').upper()
key=generate_key(mesaj,cheie)
encrypt_text=encrypt_vigenere(mesaj,key)
window['-OUT-'].update(values[encrypt_text])

window.close()

这是我认为是你问题的功能:

def encrypt_vigenere(message,key_word):
key = generate_key(message,key_word)

encrypted_text = ""

for i in range(0,len(message)):
    if message[i] == " ":
        encrypted_text += " "
    else:
        encryption_value = (alphabets.find(message[i]) + alphabets.find(key[i]))%26
        encrypted_text += alphabets[encryption_value]

return encrypted_text

它给了我这个错误:

回溯(最近调用最后): 文件“C:/Users/flavius/Documents/python/games/urs_mina/main.py”,第 62 行,位于 window['-OUT-'].update(值[encrypt_text]) 键错误:'YSRX'

每次我按 OK ti 都会显示上面的消息。有人可以向我解释为什么吗?

通过

在事件循环中获取元素sg.Input的值
mesaj = values['-IN-'].upper()
cheie = values['-KEY-'].upper()

通过

更新元素sg.Output的值
window['-OUT-'].update(encrypt_text)

window[key] 用于元素,values[key] 用于带有元素键的值字典。

如果函数 encrypt_vigenere 的参数错误,您也可能会得到错误的结果,IMO,这不是这里的问题。