Как я могу использовать функцию ввода в tkinter в аргументе if? - PullRequest
0 голосов
/ 01 октября 2019

Итак, я делаю организатор паролей в python, и я не знаю, как я могу получить пользовательский ввод из Entry и использовать его в аргументе if?

text1 = StringVar()
def but():
    text1.get()
    print(text1.get())
    knapp2 = Button(root, command="but").pack()
entry1 = Entry(root, textvariable=text1).place(x=270, y=100)

1 Ответ

0 голосов
/ 03 октября 2019

Вы можете также вызвать функцию .get () в виджете «Ввод», чтобы получить текст.

import tkinter
from tkinter import Tk, Button, Entry


mw = Tk()

entry = Entry(mw)
entry.pack()


def but():
    text = entry.get()
    print(text)
    button.config(text='Button Clicked')

button = Button(mw, command=but, text='Test')
button.pack()


mw.mainloop()

Этот код работает, но усложняется при увеличении кода. Вам нужно определить функцию перед созданием виджета, который вызывает эту функцию. В приведенном выше примере, если вы создали виджет кнопки перед функцией, вы получите исключение. Вы можете создать виджет, затем создать функцию, а затем изменить конфигурацию кнопки, чтобы вызывать эту функцию при нажатии, но это все еще довольно сложно и может привести к путанице в больших программах.

Я бы порекомендовал поместить все в класс. Это позволяет легко ссылаться на виджеты в функциях.

import tkinter
from tkinter import Tk, Button, Entry


class Main:
    def __init__(self, master):
        self.master = master

        self.entry = Entry(self.master)
        self.entry.pack()

        self.button = Button(self.master, text='Test', command=self.But)
        self.button.pack()


    def But(self):
        print(self.entry.get())
        self.button.config(text='Button Clicked.')


mw = Tk()

main = Main(mw)

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