0
シーザー暗号を使ってテキストをエンコードしてデコードするクラス用のプログラムを作っていましたが、Tkinter、私は完全なノブです。Tkinterのボタンを使って変数を更新するためのリストの割り当て
私はすべての可能性(明らかに元の平文であること)を示すために私の暗号文を無条件で強制的に解読しようとしていました。
私は、デコードボタンを押すと入力を受け取り、25の可能性をすべて列挙したリストを作成したかったのです。しかし、これを試すときはいつでも、変数ではなく文字列をリストするだけです。うまくいけば、これのいずれかが理にかなっています。 insert
ため
import string
import collections
import random
from tkinter import *
from tkinter.ttk import *
root = Tk()
root.title("Encoder")
root.geometry("500x400")
code = StringVar()
code.set('')
decode = StringVar()
decode.set('')
def caesar(rotate_string, number_to_rotate_by):
upper = collections.deque(string.ascii_uppercase)
lower = collections.deque(string.ascii_lowercase)
upper.rotate(number_to_rotate_by)
lower.rotate(number_to_rotate_by)
upper = ''.join(list(upper))
lower = ''.join(list(lower))
return rotate_string.translate(str.maketrans(string.ascii_uppercase, upper)).translate(str.maketrans(string.ascii_lowercase, lower))
def callback():
global code
our_string = e.get()
random_number = random.randint(1, 25)
code.set(caesar(our_string, random_number))
def press():
global decode
our_string = e.get()
random_number = random.randint(1, 25)
for i in range(len(string.ascii_uppercase)):
list1.insert(i, "|", caesar(our_string, i))
var = StringVar()
e = Entry(root, textvariable=var)
e.pack()
b = Button(root, text="ENCODE", width=10, command=callback)
b.pack()
b2 = Button(root, text="DECODE", width=10, command=press)
b2.pack()
l = Label(root, textvariable=code, anchor=NW, justify=LEFT, wraplength=398)
l.pack()
l.place(relx=0.5, rely=0.4, anchor=CENTER)
list1 = Listbox(root)
list1.place(relx=0.5, rely=0.7, anchor=CENTER)
list1.insert(END)
list1.update_idletasks()
root.mainloop()