如何使用Tkinter从一个函数的值返回另一个函数?

时间:2019-02-23 21:13:54

标签: python function tkinter

这是我的问题。我无法将randomtext()函数的值返回给主函数。

我希望选择要复制的文本,然后将其粘贴到某个地方。使用Label可以使用,但是当我使用Entry时不能使用。我在做什么错了?

def psw_generator():
    global gen
    genpassw = Tk()
    genpassw.title("password generator")

    entrypassw = Entry(parent, textvariable = gen, state = DISABLED)
    entrypassw.pack()


def randomtext():

    x = 0
    psw = ""
    lenght = 16
    full_char_table = "abcdef.."
    type = full_char_table

    gen = StringVar(value = psw)

    for x in range(int(lenght)):
        psw += type[int(random.randrange(len(type)))]
        x += 1

    return gen

1 个答案:

答案 0 :(得分:0)

这段代码中有很多问题,所以我已经解决了,您完成的代码在这里:

import random
from tkinter import *

global gen
genpassw = Tk()
gen = StringVar()
genpassw.title("password generator")

entrypassw = Entry(genpassw, textvariable = gen, state = DISABLED)
entrypassw.pack()
def randomtext():
    global gen
    x = 0
    psw = ""
    length = 16
    full_char_table = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"


    for x in range(int(length)):
        psw += full_char_table[random.randint(0,len(full_char_table)-1)]

    gen.set(psw)

randomtext()
genpassw.mainloop()

所以看看你的问题

entrypassw = Entry(parent, textvariable = gen, state = DISABLED)

您需要使用genpassw的条目小部件中的“父级”是什么,因为那是您的父级小部件。

type = full_char_table

您曾经使用'type'作为变量,'type'是python的内置函数,所以您不能使用它。

x += 1

无需在for循环中使用增量>> x + = 1

entrypassw = Entry(parent, textvariable = gen, state = DISABLED)
entrypassw.pack()

return gen

您要返回gen。在将它们描述为小部件的文本变量之前,现在要返回它。已弃用。

您必须使用mainloop来运行GUI。

genpassw.mainloop()