Я учитель, который пишет программу для считывания 8-значного идентификационного штрих-кода для учащихся, которые опаздывают в школу. Я опытный программист, но плохо знаком с Python и очень плохо знаком с Tkinter (около 36 часов опыта). До сих пор я активно использовал этот сайт, но мне не удалось найти ответ на этот вопрос:
Как я могу прочитать ровно 8 цифр и сразу отобразить эти 8 цифр в текстовом поле. Я могу сделать 7, но не могу получить 8. Иногда я ничего не получу в текстовом поле. Я использовал Entry, bind, и все работает хорошо, за исключением того, что я не могу получить ключи, прочитанные в событии bind, для последовательного размещения ключей в текстовом поле, которые были введены. Кажется, ID всегда корректен, когда я его печатаю, но в текстовом поле он неверен. Кажется, мне не разрешено показывать экран tkinter, поэтому по завершении он показывает только 7 цифр или ничего в текстовом поле.
Вот фрагмент моего кода, который имеет дело с GUI
from tkinter import *
from collections import Counter
import time
i=0
class studentNumGUI():
def __init__(self, master):
master.title("Student ID Reader")
self.idScanned = StringVar()
localTime = time.asctime(time.localtime(time.time()))
self.lblTime = Label(master, text=localTime)
self.lblTime.pack()
self.lbl = Label(master, text="Enter Student ID:")
self.lbl.pack()
self.idScanned.set("")
self.idScan = Entry(master,textvariable=self.idScanned,width=12)
self.idScan.pack()
self.frame=Frame(width=400,height=400)
self.frame.pack()
self.frame.focus()
self.frame.bind('<Key>',self.key)
def key(self,event):
global i
self.frame.focus()
self.idScan.insert(END,event.char)
print(repr(event.char)," was pressed") #just to make sure that my keystrokes are accepted
if (i < 7):
i += 1
else:
#put my other python function calls here once I fix my problem
self.frame.after(2000)
#self.idScan.delete(0,END) #Then go blank for the next ID to be read
i=0
root = Tk()
nameGUI = studentNumGUI(root)
root.mainloop()
введите описание изображения здесь