【发布时间】:2019-12-20 23:37:54
【问题描述】:
我有一个简单的复制粘贴事件,它应该在我的程序运行时触发一个函数:
root = tkinter.Tk()
root.bind('<Control-c>', parse_item)
root.mainloop()
parse_item 抓取剪贴板的内容并进行一些计算。
我遇到的问题是:
仅当我的程序处于焦点时才有效。我需要在程序中使用鼠标,然后才会触发绑定事件。
我需要什么:
如果程序不在焦点上(例如程序被最小化),也应该触发绑定事件。它应该总是在程序运行时触发。
【问题讨论】:
-
当程序不在焦点时,Python 无法控制击键的处理。
-
我可以使用 pynput.keyboard.Listener。这将作为脚本工作,但我想为用户提供一个 GUI,他可以使用它来关闭/停止脚本。有什么想法我可以在这里使用哪些工具?
-
你使用什么 Python 模块并不重要——它不会改变当你的脚本没有焦点时操作系统处于控制之中的事实。可能有一些方法可以编写用 Python 编写的后台守护程序或系统服务。如何执行此类操作取决于您使用的操作系统。
-
@Roman "我可以使用 pynput.keyboard.Listener。":如果您可以使用
pynput,请使用它作为后台服务使用某种Inter-process_communication@ 通知您的tkinterGUI -
@All 感谢您的回复。我已经有一个可行的解决方案。它在后台工作。我使用 tkinters
after()方法每秒调用另一个方法。另一种方法只是检查剪贴板内容是否改变,如果是,它会做一些事情。完美运行。
标签: python python-3.x tkinter