Python Forum

Full Version: Button/output help
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
First of all apologies for what may be very simple, I'm just learning. I have this set up the way I want it to display. My question is how do I tell it after I put the password in the entry box and click convert password to display in the lower frame. Will I be able to copy out of the lower frame?

import 
tkinter as tk

HEIGHT = 700
WIDTH = 800

root =tk.Tk()

root.title("Put title here")

canvas = tk.Canvas(root, height=HEIGHT, width=WIDTH)
canvas.pack()


def loop_over_input(the_str=''):
    master_list = []
    for char in the_str:
        tmp_char = passwordConversion[char]
        master_list.append(tmp_char)
    print("Master Pass List: ", master_list)
    return master_list

def click():
    entered = ent.get()
    output.delete(0.0,end)

frame = tk.Frame(root, bg='red', bd=5)
frame.place(relx=0.5, rely=0.1, relwidth=0.75, relheight=0.1, anchor='n')

entry = tk.Entry(frame, font=40)
entry.place(relwidth=0.65, relheight=1)

button = tk.Button(frame, text="Convert Password", font=40)
button.place(relx=0.7, relheight=1, relwidth=0.3)

lower_frame = tk.Frame(root, bg= 'gray', bd=10)
lower_frame.place(relx=0.5, rely=0.25, relwidth=0.75, relheight=0.6, anchor='n')

#label2 = tk.Label(root, text="Enter password to be converted", bg='white')
#label2.pack(side='top')

label1 = tk.Label(lower_frame, text="Disclamer goes here", bg='white')
label1.pack(side='bottom')



passwordConversion = {
    "A": "ALPHA",
    "a": "alpha",
    "B": "BRAVO",
    "b": "bravo",
    "C": "CHARLIE",
    "c": "charlie",
    "D": "DELTA",
    "d": "delta",
    "E": "ECHO",
    "e": "echo",
    "F": "FOXTROT",
    "f": "foxtrot",
    "G": "GOLF",
    "g": "golf",
    "H": "HOTEL",
    "h": "hotel",
    "I": "INDIA",
    "i": "india",
    "J": "JULIET",
    "j": "juliet",
    "K": "KILO",
    "k": "kilo",
    "L": "LIMA",
    "l": "lima",
    "M": "MIKE",
    "m": "mike",
    "N": "NOVEMBER",
    "n": "november",
    "O": "OSCAR",
    "o": "oscar",
    "P": "PAPA",
    "p": "papa",
    "Q": "QUEBEC",
    "q": "quebec",
    "R": "ROMEO",
    "r": "romeo",
    "S": "SIERRA",
    "s": "sierra",
    "T": "TANGO",
    "t": "tango",
    "U": "UNIFORM",
    "u": "uniform",
    "V": "VICTOR",
    "v": "victor",
    "W": "WHISKEY",
    "w": "whiskey",
    "X": "XRAY",
    "x": "xray",
    "Y": "YANKEE",
    "y": "yankee",
    "Z": "ZULU",
    "z": "zulu",
    "1": "Number 1",
    "2": "Number 2",
    "3": "Number 3",
    "4": "Number 4",
    "5": "Number 5",
    "6": "Number 6",
    "7": "Number 7",
    "8": "Number 8",
    "9": "Number 9",
    "0": "Number 0",
    "~": "tilde",
    "`": "back Quote",
    "!": "exclamation point",
    "@": "at sign",
    "#": "number sign",
    "$": "dollar sign",
    "%": "percent sign",
    "^": "caret",
    "&": "ampersand",
    "*": "asterisk",
    "(": "left parentheses",
    ")": "right parentheses",
    "_": "underscore",
    "-": "hyphen",
    "+": "plus sign",
    "=": "equals sign",
    "[": "left square bracket",
    "]": "right square bracket",
    "{": "left curly bracket",
    "}": "right curly bracket",
    "/": "forwardslash",
    "<": "less than sign",
    ">": "greater than sign",
    ",": "comma",
    ".": "peorid",
    "?": "question mark",
    ":": "colon",
    ";": "semicolon",
    '"': "double quote",
    "'": "single quote",

}

#password = input("Please enter the password: ")

#print(passwordConversion)

root.mainloop()
Have a look at tkinters callback function
I'm not understanding the documentation, I need a push please.
Here is a rough example:
#! /usr/bin/env python3

import tkinter as tk

passwordConversion = {
    "A": "ALPHA",
    "a": "alpha",
    "B": "BRAVO",
    "b": "bravo",
    "C": "CHARLIE",
    "c": "charlie",
    "D": "DELTA",
    "d": "delta",
    "E": "ECHO",
    "e": "echo",
    "F": "FOXTROT",
    "f": "foxtrot",
    "G": "GOLF",
    "g": "golf",
    "H": "HOTEL",
    "h": "hotel",
    "I": "INDIA",
    "i": "india",
    "J": "JULIET",
    "j": "juliet",
    "K": "KILO",
    "k": "kilo",
    "L": "LIMA",
    "l": "lima",
    "M": "MIKE",
    "m": "mike",
    "N": "NOVEMBER",
    "n": "november",
    "O": "OSCAR",
    "o": "oscar",
    "P": "PAPA",
    "p": "papa",
    "Q": "QUEBEC",
    "q": "quebec",
    "R": "ROMEO",
    "r": "romeo",
    "S": "SIERRA",
    "s": "sierra",
    "T": "TANGO",
    "t": "tango",
    "U": "UNIFORM",
    "u": "uniform",
    "V": "VICTOR",
    "v": "victor",
    "W": "WHISKEY",
    "w": "whiskey",
    "X": "XRAY",
    "x": "xray",
    "Y": "YANKEE",
    "y": "yankee",
    "Z": "ZULU",
    "z": "zulu",
    "1": "Number 1",
    "2": "Number 2",
    "3": "Number 3",
    "4": "Number 4",
    "5": "Number 5",
    "6": "Number 6",
    "7": "Number 7",
    "8": "Number 8",
    "9": "Number 9",
    "0": "Number 0",
    "~": "tilde",
    "`": "back Quote",
    "!": "exclamation point",
    "@": "at sign",
    "#": "number sign",
    "$": "dollar sign",
    "%": "percent sign",
    "^": "caret",
    "&": "ampersand",
    "*": "asterisk",
    "(": "left parentheses",
    ")": "right parentheses",
    "_": "underscore",
    "-": "hyphen",
    "+": "plus sign",
    "=": "equals sign",
    "[": "left square bracket",
    "]": "right square bracket",
    "{": "left curly bracket",
    "}": "right curly bracket",
    "/": "forwardslash",
    "<": "less than sign",
    ">": "greater than sign",
    ",": "comma",
    ".": "peorid",
    "?": "question mark",
    ":": "colon",
    ";": "semicolon",
    '"': "double quote",
    "'": "single quote",

}

def convert(vars):
    master_list = []
    for char in vars:
        tmp_char = passwordConversion[char]
        master_list.append(tmp_char)
    return master_list

def callback():
    label_pass['text'] = f'Entered Password: {entry.get()}'
    label_converted['text'] = f'Password Converted: {convert(entry.get())}'
    entry.delete(0, tk.END)



root = tk.Tk()
root.configure(borderwidth=2, padx=8, pady=5)
root.geometry('+10+10')

label = tk.Label(text='Enter a password to convert')
label.grid(column=0, row=0, sticky='nw')

entry = tk.Entry(width=40)
entry.grid(column=0, row=1)

btn = tk.Button(text='Submit', command=callback)
btn.grid(column=0, row=2, sticky='ne', pady=8)

label_pass = tk.Label(borderwidth=1, relief='solid', anchor='nw', pady=5, padx=5, fg='red')
label_pass.grid(column=0, row=3, ipady=5, ipadx=5, sticky='new')

label_converted = tk.Label(borderwidth=1, relief='solid', fg='red', anchor='nw', pady=5, padx=5)
label_converted.grid(column=0, row=4, sticky='new')


root.mainloop()
Tweaked the code a little

#! /usr/bin/env python3

import tkinter as tk
from functools import partial


passwordConversion = {
    "a": "alpha", "b": "bravo", "c": "charlie", "d": "delta", "e": "echo",
    "f": "foxtrot", "g": "golf", "h": "hotel", "i": "india", "j": "juliet",
    "k": "kilo", "l": "lima", "m": "mike", "n": "november", "o": "oscar",
    "p": "papa", "q": "quebec", "r": "romeo", "s": "sierra", "t": "tango",
    "u": "uniform", "v": "victor", "w": "whiskey", "x": "xray", "y": "yankee",
    "z": "zulu", "1": "Number 1", "2": "Number 2", "3": "Number 3", "4": "Number 4",
    "5": "Number 5", "6": "Number 6", "7": "Number 7", "8": "Number 8", "9": "Number 9",
    "0": "Number 0", "~": "tilde", "`": "back Quote", "!": "exclamation point",
    "@": "at sign", "#": "number sign", "$": "dollar sign", "%": "percent sign",
    "^": "caret", "&": "ampersand", "*": "asterisk", "(": "left parentheses",
    ")": "right parentheses", "_": "underscore", "-": "hyphen", "+": "plus sign",
    "=": "equals sign", "[": "left square bracket", "]": "right square bracket",
    "{": "left curly bracket", "}": "right curly bracket", "/": "forwardslash",
    "<": "less than sign", ">": "greater than sign", ",": "comma", ".": "peorid",
    "?": "question mark", ":": "colon", ";": "semicolon", '"': "double quote",
    "'": "single quote", " ": "space"

}

def convert(vars):
    if not vars:
        label_pass['anchor'] = 'nw'
        label_pass['text'] = 'Error! Please enter a password to convert'
        label_pass['fg'] = 'red'
        label_pass_header['text'] = ''
        label_converted_header['text'] = ''
        label_converted['text'] = ''
    else:
        master_list = []
        for char in vars.lower():
            tmp_char = passwordConversion[char]
            master_list.append(tmp_char)
        return master_list

def callback(event):
    label_pass_header['text'] = 'Password Entered: '
    label_pass_header['fg'] = 'navy'

    label_pass['fg'] = 'blue'
    label_pass['text'] = f'{entry.get().lower()}'
    label_pass['anchor'] = 'nw'


    label_converted_header['text'] = 'Password Converted: '
    label_converted_header['fg'] = 'navy'

    label_converted['fg'] = 'brown'
    label_converted['justify'] = 'left'
    label_converted['text'] = f'{", ".join(convert(entry.get()))}'
    entry.delete(0, tk.END)



root = tk.Tk()
root.configure(borderwidth=2, padx=8, pady=5)
root.geometry('+10+10')
root.columnconfigure(0, weight=1)

label = tk.Label(root, text='Enter a password to convert')
label.grid(columnspan=2, column=0, row=0, sticky='nw')

entry = tk.Entry(root, width=40)
entry.configure(state='normal')
entry.focus()
entry.grid(columnspan=2, column=0, row=1, sticky='nw')

btn = tk.Button(root, text='Submit', command=partial(callback, entry.get()))
btn.grid(columnspan=2, column=0, row=2, sticky='nw', pady=8)


label_pass_header = tk.Label(root, anchor='nw')
label_pass_header.grid(column=0, row=3, sticky='nw')

label_pass = tk.Label(root, borderwidth=1, anchor='nw')
label_pass.grid(column=1, row=3, sticky='nw')

label_converted_header = tk.Label(root, anchor='nw')
label_converted_header.grid(column=0, row=4, sticky='nw')
label_converted = tk.Label(root, borderwidth=1, anchor='w', wraplength=200)
label_converted.grid(column=1, row=4)

root.bind('<Return>', callback)
root.bind('<KP_Enter>', callback)


root.mainloop()