为什么不打印分配的信件

时间:2019-09-03 09:07:14

标签: python-3.x tkinter

我想更改输出,但是由于某些原因,当我放一个字母时,分配的字母完全不同

我已经尝试过重新分配工作,重新组织了我所知道的几乎所有内容,但它不起作用

from tkinter import *
import random
window = Tk()
window.title("Enigma Ui")
lbl = Label(window,bg = "#d5ddfc", text='''Welcome''',font=("Helvecta", 12))
lbl.grid(column=20, row=0)
window.geometry('120x90')
window.configure(bg = "#d5ddfc")
def clicked():
    res = "" + txt.get()
    keywords = {'k': 'a',
                '7': 'b',
                'r': 'c',
                '9': 'd',
                'q': 'e',
                '6': 'f',
                'p': 'g',
                '2': 'h',
                'j': 'i',
                '4': 'j',
                'u': 'k',
                '0': 'l',
                'h': 'm',
                '2': 'n',
                '1': 'o',
                '1': 'p',
                'z': 'q',
                'm': 'r',
                '7': 's',
                '3': 't',
                'v': 'u',
                'f': 'v',
                '5': 'w',
                'r': 'x',
                'a': 'y',
                't': 'z'
                }

    new_label_value = res
    for keyword, replacement in keywords.items():
        new_label_value = new_label_value.replace(keyword, replacement)
    lbl.configure(text=new_label_value)
btn = Button(window,text="Decrypt", bg= "#fcfcf3",bd=0, command = clicked)
btn.grid(column=20, row=30)
txt =Entry(window,width=20, bd=0, bg = "white")
txt.grid(column=20,row=35)
window.mainloop()

我要去山雀,以便当我把k7r9q6p2j4u0h2lizm73vf5rat放到abcdefghijklmnopqrstuvwxyz出来

1 个答案:

答案 0 :(得分:0)

我不太了解为什么需要使用replace。您有一个字典,其中所有加密字符都作为键,而所有未加密字符都作为这些键的值。您需要做的就是遍历加密字符串中每个字符的循环,然后将其用作字典的键:

from tkinter import *
import random
window = Tk()
window.title("Enigma Ui")

lbl = Label(window,bg = "#d5ddfc", text='''Welcome''',font=("Helvecta", 12))
lbl.grid(column=20, row=0)

window.geometry('120x90')
window.configure(bg = "#d5ddfc")

def clicked():
    new_label_value = ''
    keywords = {'k': 'a',
            '7': 'b',
            'r': 'c',
            '9': 'd',
            'q': 'e',
            '6': 'f',
            'p': 'g',
            '2': 'h',
            'j': 'i',
            '4': 'j',
            'u': 'k',
            '0': 'l',
            'h': 'm',
            '2': 'n',
            'l': 'o',
            'i': 'p',
            'z': 'q',
            'm': 'r',
            '7': 's',
            '3': 't',
            'v': 'u',
            'f': 'v',
            '5': 'w',
            'r': 'x',
            'a': 'y',
            't': 'z'
            }
    for i in txt.get():
        new_label_value = new_label_value + keywords[str(i)]
    lbl.configure(text=new_label_value)

btn = Button(window,text="Decrypt", bg= "#fcfcf3",bd=0, command = clicked)
btn.grid(column=20, row=30)

txt =Entry(window,width=20, bd=0, bg = "white")
txt.grid(column=20,row=35)

window.mainloop()

另一方面,字符串“ k7r9q6p2j4u0h2lizm73vf5rat”不会输出“ abcdefghijklmnopqrstuvwxyz”,但会输出“ asxdefgnijklmnopqrstuvwxyz”,这是因为您没有正确声明字典。

您还具有两个用于“ l”的字典键,而没有用于“ i”的字典键,因此我用“ i”替换了“ l”的第二个实例。