HiveBrain v1.2.0
Get Started
← Back to all entries
patternpythonMinor

Made a simple gui string encrypter, just to obfuscate plaintext

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
simplemadejustobfuscateguistringplaintextencrypter

Problem

I realize this won't stop people who know what they're doing, just a project I decided to undertake while I'm trying to learn Python and Tkinter. Would love some input!

```
import Tkinter
import base64

class crypt_mod(Tkinter.Tk):
def __init__(self, parent):
Tkinter.Tk.__init__(self, parent)
self.parent = parent
self.initialize()

def initialize(self):
self.grid()

plain_label = Tkinter.Label(text='Plain Text:')
plain_label.grid(column=0, row=0, sticky='E')

self.ptxt = Tkinter.StringVar()
self.plain_text = Tkinter.Entry(self, textvariable=self.ptxt, width=50)
self.plain_text.grid(column=1, row=0, padx=5, pady=5)
self.plain_text.bind("", self.encrypt)

self.enc_button = Tkinter.Button(self, text='Encrypt', command=self.encrypt, relief='groove')
self.enc_button.grid(column=2, row=0, padx=5, pady=5)

self.dec_button = Tkinter.Button(self, text='Decrypt', command=self.decrypt, relief='groove')
self.dec_button.grid(column=2, row=1, padx=5, pady=5)

plain_label = Tkinter.Label(text='Base64:')
plain_label.grid(column=0, row=1, sticky='E')

self.etxt = Tkinter.StringVar()
self.e_text = Tkinter.Entry(self, textvariable=self.etxt, width=50)
self.e_text.grid(column=1, row=1, padx=5, pady=5)

self.clear_button = Tkinter.Button(self, text='Clear Both', command=self.clear_both, relief='groove')
self.clear_button.grid(column=1, row=2, padx=5, pady=5)

self.htxt = Tkinter.StringVar()
self.history = Tkinter.Text(width=50, height=10, wrap='word', spacing1=2, font=('courier',8), state='disabled')
self.history.grid(column=0, row=3, columnspan=3, padx=5, pady=5)

self.clear_history_button = Tkinter.Button(self, text='Clear History', command=self.clear_history, relief='groove')
self.clear_history_button.grid(column=1, row=4, padx=5, pady=5)

def encrypt(self):

Solution

import Tkinter
import base64

class crypt_mod(Tkinter.Tk):


Do you know about PEP8? It's a style guide for Python that lots of Python developers follow. One of the things it says is that class names should use the CapWords convention, eg. CryptMod. Note that Tkinter doesn't necessary follow those rules, as it's a really old module.

def __init__(self, parent):
        Tkinter.Tk.__init__(self, parent)
        self.parent = parent
        self.initialize()


self.parent seems to be unused.

def initialize(self):
        self.grid()
            ....


Not much to say here: the usual GUI building code.

def encrypt(self):
        self.etxt.set(base64.b64encode(str(self.ptxt.get())))
        self.history.config(state='normal')
        self.history.insert(Tkinter.END, 'encrypt:\n' + base64.b64encode(str(self.ptxt.get())) + '\n')
        self.history.config(state='disabled')
        self.history.see(Tkinter.END)
        #print "encrypt click!"


Avoid creating twice your encrypted text: your code would be clearer if you had a encrypted variable. It's not terribly important here, but could be in future projects where you will have more lines of code. Consider using format() (recommended in Python 3) instead of building your strings by concatenation: "decrypt:\n {} \n".format(encrypted). (Those comments also apply to decrypt.)

Code Snippets

import Tkinter
import base64

class crypt_mod(Tkinter.Tk):
def __init__(self, parent):
        Tkinter.Tk.__init__(self, parent)
        self.parent = parent
        self.initialize()
def initialize(self):
        self.grid()
            ....
def encrypt(self):
        self.etxt.set(base64.b64encode(str(self.ptxt.get())))
        self.history.config(state='normal')
        self.history.insert(Tkinter.END, 'encrypt:\n' + base64.b64encode(str(self.ptxt.get())) + '\n')
        self.history.config(state='disabled')
        self.history.see(Tkinter.END)
        #print "encrypt click!"

Context

StackExchange Code Review Q#25773, answer score: 2

Revisions (0)

No revisions yet.