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

В конечном итоге я хочу создать небольшую программу с текстовым полем, в которой вы должны ввести первые 50 или около того цифр числа Пи.Я хочу, чтобы ничего не происходило, если пользователь вводит правильные символы, но я хочу, чтобы что-то мигало красным, если они вводят неправильный символ.Например, если пользователь вводит «3.1», ничего не происходит, кроме текста, отображаемого в текстовом поле, но если затем он вводит неправильный номер, например «3.15», я хочу, чтобы что-то мигало красным.

from tkinter import *

def input(event):
    inp = (ent.get('1.0', END))
    if inp == '3':
        print(inp)
    else:
        print(('--') + (inp))

root = Tk()
root.title('pi, okay')
root.geometry('425x50')

ent = Text(root, width = 50, height = 1)
ent.bind('<KeyRelease>', input)
ent.pack()



mainloop()

Я думаю, что СЛЕДУЕТ, чтобы это произошло, когда консоль напечатает «3», если пользователь вводит «3», а консоль напечатает «- (что бы пользователь еще не набрал)», если это так.не 3. Но на самом деле происходит то, что программа напечатает «- (ввод)», несмотря ни на что.

1 Ответ

0 голосов
/ 08 февраля 2019

Вы можете использовать что-то подобное, если вам нужна только одна строка ввода:

var = StringVar()
ent = Entry(root, width=50, textvariable=var)
def check_value(var, ent, *args):
    pi = "3.1415"
    if not pi.startswith(var.get()):
        print("wrong input")
        ent.config(fg="red")
    else:
        ent.config(fg="black")

var.trace('w', lambda *args: check_value(var, ent, *args))
ent.pack()

Здесь var.trace() будет вызывать функцию check_value каждый раз, когда пользователь вводит что-либо в виджете ввода.Вы можете добавить свою логику, чтобы проверить входное значение и изменить пользовательский интерфейс (или распечатать журналы) на основе результата проверки.

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