Добавить запись в список, если запись имеет определенную длину - PullRequest
2 голосов
/ 02 августа 2020

Я новичок в python / tkinter, в моей лаборатории мы используем сканер штрих-кода для сканирования номеров образцов в базу данных. Я просто хочу иметь возможность создать виджет ввода, который может определять длину текста, который ему передается, и, если это такая длина, добавлять его в список. Вот мой код:

from tkinter import *


def my_tracer(arg1, arg2, arg3):
    SampleNumber = len(e1_var.get())
    t_var.set(SampleNumber)
    if t_var == 8:
        Listbox.insert(END, t_var)


root = Tk()
root.geometry("200x200")

SampleList = Listbox(root, selectmode=EXTENDED)
SampleList.pack()

t_var = StringVar()

e1_var = StringVar()
e1_var.trace("w", my_tracer)

e1 = Entry(root, textvariable=e1_var)
e1.pack()

root.mainloop()

Я не получаю ошибки, но ничего не происходит

Я уверен, что здесь есть что-то важное, чего мне не хватает.

Заранее спасибо

1 Ответ

2 голосов
/ 02 августа 2020

Следующий код неверен:

if t_var == 8:
    Listbox.insert(END, t_var)

Он должен быть:

if SampleNumber == 8:
    SampleList.insert(END, e_var.get())

Ниже приведен обновленный код, основанный на вашем:

from tkinter import *

def my_tracer(*args):
    txt = e1_var.get().strip()
    if len(txt) == 8:
        SampleList.insert(END, txt)
        e1_var.set('') # clear the entry for next scan

root = Tk()
root.geometry("200x200")

SampleList = Listbox(root, selectmode=EXTENDED)
SampleList.pack()

e1_var = StringVar()
e1_var.trace("w", my_tracer)

e1 = Entry(root, textvariable=e1_var)
e1.pack()

root.mainloop()

PS : t_var не нужен, поэтому я его удалил.

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