【问题标题】:Tkinter + RFID, only display images when RFID tag is readTkinter + RFID,仅在读取 RFID 标签时显示图像
【发布时间】:2017-08-29 20:05:33
【问题描述】:

我必须编写一个程序,当 RFID 标签位于 RFID 阅读器上时显示图像,并在 RFID 标签从 RFID 阅读器上移除时移除图像。

以下代码可以在读取标签或标签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() 函数。如何使程序仅在读取相应标签时显示图像,而在未读取标签时不显示任何内容?

【问题讨论】:

  • @akhilc Tkinter 不能那样工作
  • 刚试过,我卡住了while循环,不断打印例如1.猜测问题是reader变量不是这样更新的
  • 出现标签时是否有触发事件?如果是这样,您能否让我知道事件是什么,我会看看我是否可以编写 tkinter 方面的内容?

标签: python tkinter rfid


【解决方案1】:

让我们从这个开始......

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()

【讨论】:

  • 我试过用这个 - 添加到问题中。读取标签时,我卡在第一张图片上。程序卡在“if one in reader”语句中。
  • @Daniel Robotics 试试这个,看看它是否适合您的设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 2017-07-16
  • 1970-01-01
相关资源
最近更新 更多