Как вернуть значение из функции в другую функцию с помощью Tkinter? - PullRequest
0 голосов
/ 24 февраля 2019

Это моя проблема.Я не могу вернуть значение функции 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 голосов
/ 24 февраля 2019

В этом коде много проблем, поэтому я решил их, и ваш готовый код здесь:

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)

Что такое 'parent 'в виджете ввода, вам нужно использовать genpassw, потому что это ваш родительский виджет.

type = full_char_table

Вы использовали' type 'в качестве переменной,' type 'является встроенной функцией python, поэтому вы не можете его использовать.

x += 1

Нет необходимости использовать приращение для цикла >> x + = 1

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

return gen

Вы возвращаете gen. До того, как вы описали их как текстовую переменную для виджета, а теперьВы возвращаете это.Это устарело.

Вы должны использовать mainloop, чтобы запустить графический интерфейс.

genpassw.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...