将tkinter设置为始终是当前活动窗口

时间:2019-08-09 23:35:48

标签: python tkinter

我正在尝试使用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窗口即可阅读我的键绑定。

0 个答案:

没有答案