Я понятия не имею, почему мне пока не удалось найти хорошее решение этой проблемы, мне это кажется очень элементарным ... хотя и не настолько элементарным, чтобы удовлетворительно понять его.Проект главы в книге по криптологии, которую я читаю, дает указание написать простой моно-алфавитный шифр на предпочитаемом вами языке ... Я выбрал Python.
Он начинается с простого приложения tkinter.с некоторыми виджетами, смеетсяВ любом случае вот соответствующий код:
from tkinter import *
from tkinter.filedialog import askopenfilename
from tkinter.messagebox import showerror
class Application(Frame):
def __init__(self, master):
""" Initialize Frame. """
super(Application, self).__init__(master)
self.grid()
self.create_widgets()
def create_widgets(self):
""" Set all program widgets. """
# set all labels
Label(self, text = "Plaintext File: ")\
.grid(row=0, column=0, sticky=W)
Label(self, text = "Ciphertext: ")\
.grid(row=3, column=0, sticky=W)
Label(self, text = "Offset: ")\
.grid(row=2, column=0, sticky=W)
# set buttons
Button(self, text = "Browse", command=self.load_file, width=10)\
.grid(row=1, column=0, sticky=W)
# set entry field
self.file_name = Text(self, width=39, height=1, wrap=WORD)
self.file_name.grid(row=1, column=1, columnspan=4, sticky=W)
# set display field
self.output_display = Text(self, width=50, height=5, wrap=WORD)
self.output_display.grid(row=4, column=0, columnspan=4, sticky=W)
# set offset amount spinbox
self.offset_amt = IntVar()
self.offset_amt = Spinbox(self, from_=1, to=13)
self.offset_amt.grid(row=2, column=1, sticky=W)
# set shift direction
self.shift_dir = StringVar()
self.shift_dir.set('r')
Radiobutton(self, text="Shift Right", variable=self.shift_dir, value='r')\
.grid(row=2, column=2, sticky=W)
Radiobutton(self, text="Shift Left", variable=self.shift_dir, value='l')\
.grid(row=2, column=3, sticky=W)
def load_file(self):
self.filename = askopenfilename(initialdir='~')
if self.filename:
try:
#self.settings.set(self.filename)
self.file_name.delete(0.0, END)
self.file_name.insert(0.0, open(self.filename, 'r'))
except IOError:
showerror("Open Source File", "Failed to read file \n'%s'"%self.filename)
return
def main():
root = Tk()
root.title("simple mono-alpha encrypter")
root.geometry('450x250')
app = Application(root)
for child in app.winfo_children():
child.grid_configure(padx=3, pady=3)
root.mainloop()
main()
На самом деле очень мало того, что действительно делает что-то, кроме создания виджетов прямо сейчас, я решил опубликовать все это, так как это еще не связано, и кто-то может получить хорошийИдея, где я нахожусь.
Моя проблема, которую я не решил, состоит в том, что когда я нажимаю кнопку «Обзор», чтобы выбрать файл для шифрования, а затем выберите файл, содержимое файла отображается вТекстовый виджет 'file_name', а не само имя файла.
Я думаю, что мне нужно изменить переменную 'filename' на не фактическое имя файла, а файл вместо этого, а затем загрузить содержимое поля File Name из диалогового окна open file в переменную 'filename',Я просто еще не смог понять, как это сделать.Я также не сталкивался с подходящим способом сделать это.Любое руководство ??
Спасибо F