Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

when generating text the text displays <function s at 0x000001B240AB3E2> how can I display the generated thing properly in tkinter python?

from ctypes.wintypes import SIZE
from tkinter import * # import tkinter
import secrets

window = Tk() # creates window

window.title('PassGen') # changes title
window.geometry('600x400') # sets size
window.resizable(False,False) # prevents user from changing size

title = Label(window,text = 'PassGen', font=('Times',20)) # creates title
title.place(x=260,y=75) # displays title at desird location

v = DoubleVar()
scale = Scale(window, variable = v, from_ = 8, to = 16, orient = HORIZONTAL)
scale.pack(anchor=CENTER)
scale.place(x=235,y=170)

def s():
    if scale == 8:
        (secrets.token_hex(8))
    elif scale == 9:
        (secrets.token_hex(9))
    elif scale == 10:
        (secrets.token_hex(10))
    elif scale == 11:
        (secrets.token_hex(11))
    elif scale == 12:
        (secrets.token_hex(12))
    elif scale == 13:
        (secrets.token_hex(13))
    elif scale == 14:
        (secrets.token_hex(14))
    elif scale == 15:
        (secrets.token_hex(15))
    elif scale == 16:
        (secrets.token_hex(16))


def password():
    display = Text(window,height=1,width=32) # displays text
    display.insert('1.0', s) # inserts the pasword generator into the text
    display.place(x=80,y=153) # displays the ext in a specific place
    display.config(state='disabled') # prevents user from editing password


button = Button(window, text = 'Generate Password', command = password).place(x=350,y=150) # button for user to click and generate password.

window.mainloop()# displays window infinitely

when generating text the text displays <function s at 0x000001B240AB3E2> how can I display the generated thing properly in tkinter python?

I want the scale to control the length of the generated text but it displays <function s at 0x000001B240AB3E20> instead of something like dljvdlk2okd0d

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

There are few issues in your code:

  • it is better to use IntVar instead of DoubleVar for v
  • need to return result from s()
  • use s() instead of s in display.insert('1.0', s)
...
v = IntVar()  # use IntVar instead of DoubleVar
scale = Scale(window, variable = v, from_ = 8, to = 16, orient = HORIZONTAL)
...
def s():
    return secrets.token_hex(v.get())

def password():
    display = Text(window,height=1,width=32) # displays text
    ### use s() instead of s in below line
    display.insert('1.0', s()) # inserts the pasword generator into the text
    display.place(x=80,y=153) # displays the ext in a specific place
    display.config(state='disabled') # prevents user from editing password
...

Actually you don’t need s() at all:

def password():
    display = Text(window,height=1,width=32) # displays text
    # call secrets.token_hex(v.get()) directly instead of s()
    display.insert('1.0', secrets.token_hex(v.get()))
    display.place(x=80,y=153) # displays the ext in a specific place
    display.config(state='disabled') # prevents user from editing password
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading