【问题标题】:python Tkinter Capturing keyboard events save as one single stringpython Tkinter捕获键盘事件保存为一个字符串
【发布时间】:2018-01-23 00:25:54
【问题描述】:

是否可以将键盘事件存储到一个字符串中?使用下面的代码,它只存储一个字符并打印它。但对于读卡器或条形码阅读器,它包含字符/字符串的集合,而不是一次一个字符。目标是将所有字符保存到文本变量中。

from tkinter import *

root = Tk()

def key(event):
     text= event.char
     text+= event.char
     print ("pressed", text)

def callback(event):
     frame.focus_set()
print ("clicked at", event.x, event.y)

frame = Frame(root, width=100, height=100)
frame.bind("<Key>", key)
frame.bind("<Button-1>", callback)
frame.pack()

root.mainloop()

【问题讨论】:

    标签: python python-3.x events tkinter keyboard


    【解决方案1】:

    目前,您正在创建 text 变量,每次调用 key() 函数时,它只存储您输入的最后一个字符。

    您可以将文本定义为模块级变量,并在您的 key 函数中使用该模块级 text -

    text = ''
    def key(event):
        global text
        text+= event.char
        print("pressed", text)
    

    【讨论】:

    • Anand,如何在函数外打印文本
    • 只需在函数外使用text变量,它将包含到目前为止按下的所有字符。
    • 太棒了。但是,如果我尝试在函数之外打印文本变量,它不会打印任何内容。
    • 那一定是如果你尝试在模块级别打印它,模块只在开始时执行一次,文本变量只有在你开始输入后才会有值,这是在打印之后发生这种情况,您可以尝试在 click 函数中打印text 变量的值,当您点击时它会打印该值
    • 好的,现在如果我只在 key 方法中返回文本,那么文本将保存键盘事件的值。现在要使用这个值,如果我调用方法 key(event:{char}) 它需要一个 event:{char} 参数。 event:{char} 是什么,即上述方法的参数,以便我稍后调用它。我需要使用将存储在 key 方法之外的文本中的值
    猜你喜欢
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 2020-03-10
    • 2012-02-01
    • 2014-04-28
    相关资源
    最近更新 更多