我正在尝试使用tkinter作为切换自动化过程的一种方式。我下面的代码片段有效,但是仅当tkinter窗口是当前活动窗口时,热键才起作用。
我发现this topic在讨论如何完成此操作,但是这些方法似乎是特定于操作系统的,并且似乎都不适用于Windows 10。
import tkinter as tk
class Automate(tk.Frame):
__loop__ = None
def __init__(self, master):
super(Automate, self).__init__(master)
# F7 initiates the loop.
self.master.bind('<F7>', lambda event: self.automate())
# F8 stops the loop.
self.master.bind('<F8>', lambda event: self.automate_cancel())
# F9 closes the script.
self.master.bind('<F9>', lambda event: self.master.quit())
def automate(self):
"""Loops over this method."""
print('Do Stuff')
self.__loop__ = self.master.after(1, self.automate)
def automate_cancel(self):
"""Exits loop and reset variable."""
print('Stop Doing Stuff')
self.master.after_cancel(self.__loop__)
self.__loop__ = None
if __name__ == '__main__':
root = tk.Tk()
# Removes Window Border, minimize button, full screen button, and exit button.
root.overrideredirect(True)
# Forces window to always be on top.
root.wm_attributes('-topmost', 1)
# Sets window as one pixel on the screen.
root.geometry('0x0')
Automate(root)
root.mainloop()
在上面的脚本中,按F7
将启动一个脚本并将其循环。 F8
停止循环,F9
完全退出程序。仅当tkinter是当前活动窗口时,键绑定才起作用。我希望tkinter无需打开tkinter窗口即可阅读我的键绑定。