Tkinter + RFID,仅在读取 RFID 标签时显示图像
Tkinter + RFID, only display images when RFID tag is read
我必须编写一个程序,当 RFID 标签位于 RFID reader 上时显示图像,当 RFID 标签从 RFID reader 上移除时删除图像。
下面的代码可以在读取标签或标签2时显示图像,但继续显示它们。
from Tkinter import *
import serial
import time
one = '0419AC8E70'
two = '0419ACB481'
ser = serial.Serial('/dev/ttyUSB0', 2400)
reader = ser.read(11)
root = Tk()
frame = Frame(root)
frame.pack()
photo = PhotoImage(file="/home/daniel/Desktop/BY/test3.gif")
photo2 = PhotoImage(file="/home/daniel/Desktop/BY/test2.gif")
firstimage = Label(frame, image=photo)
secondimage = Label(frame, image=photo2)
def set_image():
if one in reader:
print("1")
ser.flush()
time.sleep(1)
firstimage.pack( fill = BOTH)
else:
firstimage.pack_forget()
if two in reader:
print("1")
secondimage.pack( fill = BOTH)
ser.flush()
time.sleep(1)
else:
secondimage.pack_forget()
firstimage.after(200,set_image) #to run set_image function at regular intervals
set_image()
root.mainloop()
让我感到不安的是 Tkinter gui 中的 root.mainloop() 函数。如何让程序只在读取相应标签时显示图像,而在未读取标签时不显示任何内容?
让我们从这个开始...
from Tkinter import *
import serial
import time
one = '0419AC8E70'
two = '0419ACB481'
ser = serial.Serial('/dev/ttyUSB0', 2400)
reader = ser.read(11)
root = Tk()
frame = Frame(root)
frame.pack()
#photo = PhotoImage(file="/home/daniel/Desktop/BY/test3.gif")
#photo2 = PhotoImage(file="/home/daniel/Desktop/BY/test2.gif")
firstimage = Label(frame)
firstimage.pack()
secondimage = Label(frame)
secondimage.pack()
def set_image():
ser = serial.Serial('/dev/ttyUSB0', 2400)
reader = ser.read(11)
if one in reader:
firstimage.config(text="One in reader")
elif two in reader:
secondimage.config(text="Two in reader")
else:
firstimage.config(text="One not in reader")
secondimage.config(text="Two not in reader")
firstimage.after(2000,set_image)
secondimage.after(2000,set_image)
set_image()
root.mainloop()
我必须编写一个程序,当 RFID 标签位于 RFID reader 上时显示图像,当 RFID 标签从 RFID reader 上移除时删除图像。
下面的代码可以在读取标签或标签2时显示图像,但继续显示它们。
from Tkinter import *
import serial
import time
one = '0419AC8E70'
two = '0419ACB481'
ser = serial.Serial('/dev/ttyUSB0', 2400)
reader = ser.read(11)
root = Tk()
frame = Frame(root)
frame.pack()
photo = PhotoImage(file="/home/daniel/Desktop/BY/test3.gif")
photo2 = PhotoImage(file="/home/daniel/Desktop/BY/test2.gif")
firstimage = Label(frame, image=photo)
secondimage = Label(frame, image=photo2)
def set_image():
if one in reader:
print("1")
ser.flush()
time.sleep(1)
firstimage.pack( fill = BOTH)
else:
firstimage.pack_forget()
if two in reader:
print("1")
secondimage.pack( fill = BOTH)
ser.flush()
time.sleep(1)
else:
secondimage.pack_forget()
firstimage.after(200,set_image) #to run set_image function at regular intervals
set_image()
root.mainloop()
让我感到不安的是 Tkinter gui 中的 root.mainloop() 函数。如何让程序只在读取相应标签时显示图像,而在未读取标签时不显示任何内容?
让我们从这个开始...
from Tkinter import *
import serial
import time
one = '0419AC8E70'
two = '0419ACB481'
ser = serial.Serial('/dev/ttyUSB0', 2400)
reader = ser.read(11)
root = Tk()
frame = Frame(root)
frame.pack()
#photo = PhotoImage(file="/home/daniel/Desktop/BY/test3.gif")
#photo2 = PhotoImage(file="/home/daniel/Desktop/BY/test2.gif")
firstimage = Label(frame)
firstimage.pack()
secondimage = Label(frame)
secondimage.pack()
def set_image():
ser = serial.Serial('/dev/ttyUSB0', 2400)
reader = ser.read(11)
if one in reader:
firstimage.config(text="One in reader")
elif two in reader:
secondimage.config(text="Two in reader")
else:
firstimage.config(text="One not in reader")
secondimage.config(text="Two not in reader")
firstimage.after(2000,set_image)
secondimage.after(2000,set_image)
set_image()
root.mainloop()