【发布时间】:2019-03-30 08:33:58
【问题描述】:
我有一个 Raspberry Pi 和一个运行 python 脚本的 RFID 扫描仪。我正在使用 tkinter 使用以下代码捕获输入。
from Tkinter import *
import Tkinter as tk
def __init__(self):
command = tk.Tk()
self.e = Entry(command)
self.e.grid()
self.e.focus_set()
command.bind('<KeyPress>', self.key_input)
command.mainloop()
def key_input(self, event):
key_press = event.keysym
if key_press == 'Return':
time.sleep(0.5)
self.enter()
else:
pass
def enter(self):
//various API calls etc. Here is where the RFID tag is often duplicated)
我遇到了一些奇怪的行为,即在触发返回之前两次捕获 RFID 标签,我想知道这是否是因为操作顺序。
使用
【问题讨论】:
-
请用一些可用的代码更新您的问题。只需查看您的代码,我就可以看到您已经使用至少 2 种不同的方法导入了 tkinter。应该避免这种情况。我看到的第二个问题是您的 key_input 方法在 tkinter 主循环之外。我猜你正在学习一个类的一小部分,然后把它扔到这个例子中,但这对测试代码没有多大帮助。老实说,不是 100% 你的问题是什么。您的 RFID 扫描会向您发送某种信号,因此请在检查事件时使用它。
-
为什么要将事件绑定到 Tk 对象而不是 Entry 对象?
-
您能否使用打印语句来检测您的扫描仪正在触发什么样的按键事件?然后继续使用该事件名称。
-
@DaveMaheux 我是 python 和 tkinter 的新手,应该如何设置?该代码大部分时间都可以正常工作,只是偶尔会失败,我认为这可能就是问题所在。
-
@Craig.Pearce 如果您的代码大部分时间都可以工作,但有时会失败,那么您应该保留正在通过的事件的运行日志,然后在失败时查看该日志