2017-03-14 10 views
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() 

答えて

1

最初の引数が挿入ポイントである:

は、ここに私のコードです。それがどこであるかを計算したくない場合は、代わりに「終了」を使用できます。また、print関数は、複数の入力を自動的に変換および連結する唯一の関数です。他のすべての関数では、文字列の書式設定を使用して文字列を作成する必要があります。

for i in range(len(string.ascii_uppercase)): 
    # make the output string 
    result = '{:0>2}|{}'.format(i, caesar(our_string, i)) 

    # add this string to the listbox 
    list1.insert(END, result) 
関連する問題