Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter通过热键隐藏和显示窗口_Python_Tkinter_Hotkeys - Fatal编程技术网

Python Tkinter通过热键隐藏和显示窗口

Python Tkinter通过热键隐藏和显示窗口,python,tkinter,hotkeys,Python,Tkinter,Hotkeys,我试图写一个程序,我可以隐藏和显示通过热键。我使用库“键盘”成功地让应用程序显示和隐藏,但是由于库的“等待”功能,它会阻止文本框正常工作。我曾尝试在Tkinter中使用键绑定,但我遇到了另一个问题,即一旦程序被隐藏或选择了另一个应用程序,我就无法通过热键将焦点返回到隐藏窗口 import Tkinter as Tk import keyboard class MyApp(object): def __init__(self, parent): self.root =

我试图写一个程序,我可以隐藏和显示通过热键。我使用库“键盘”成功地让应用程序显示和隐藏,但是由于库的“等待”功能,它会阻止文本框正常工作。我曾尝试在Tkinter中使用键绑定,但我遇到了另一个问题,即一旦程序被隐藏或选择了另一个应用程序,我就无法通过热键将焦点返回到隐藏窗口

import Tkinter as Tk
import keyboard

class MyApp(object):

    def __init__(self, parent):
        self.root = parent
        self.root.title("Main frame")

        self.frame = Tk.Frame(parent)
        self.frame.pack()

        self.editor = Tk.Text(self.frame)
        self.editor.pack()
        self.editor.config(font="Courier 12")
        self.editor.focus_set()


        keyboard.add_hotkey('ctrl+alt+s', self.show)
        keyboard.add_hotkey('ctrl+alt+h', self.hide)
        keyboard.wait()

        self.root.withdraw() 


    def show(self):
        self.root.update()
        self.root.deiconify()

    def hide(self):
        self.root.withdraw()


if __name__ == "__main__":
    root = Tk.Tk()
    root.geometry("800x600")
    app = MyApp(root)
    root.mainloop()

任何帮助都很好:)

只需删除这个wait命令,它是一个额外的主循环,Tkinter执行其工作时不需要它。我试图解决你的线程问题,但由于我想准确地检查哪些不起作用,我意外地做了我认为你想做的。因此,代码是:

import tkinter as tk
import keyboard

class App(tk.Tk):

    def __init__(self):
        super().__init__()
        self.geometry("800x600")
        self.title("Main frame")

        self.editor = Tk.Text(self)
        self.editor.pack()
        self.editor.config(font="Courier 12")
        self.editor.focus_set()


        keyboard.add_hotkey('ctrl+alt+s', self.show)
        keyboard.add_hotkey('ctrl+alt+h', self.hide)


    def show(self):
        self.update()
        self.deiconify()

    def hide(self):
        self.update()
        self.withdraw()


if __name__ == "__main__":
    App().mainloop()

我希望这对你有用。我还建议更改此键的设置。用PyZo测试是不可能的!它总是尝试“另存为…”,我不想…

只需删除这个等待命令,这是一个额外的主循环,在Tkinter执行其工作时不需要它。我试图解决你的线程问题,但由于我想准确地检查哪些不起作用,我意外地做了我认为你想做的。因此,代码是:

import tkinter as tk
import keyboard

class App(tk.Tk):

    def __init__(self):
        super().__init__()
        self.geometry("800x600")
        self.title("Main frame")

        self.editor = Tk.Text(self)
        self.editor.pack()
        self.editor.config(font="Courier 12")
        self.editor.focus_set()


        keyboard.add_hotkey('ctrl+alt+s', self.show)
        keyboard.add_hotkey('ctrl+alt+h', self.hide)


    def show(self):
        self.update()
        self.deiconify()

    def hide(self):
        self.update()
        self.withdraw()


if __name__ == "__main__":
    App().mainloop()

我希望这对你有用。我还建议更改此键的设置。用PyZo测试是不可能的!它总是尝试“另存为…”,我不想…

您好,恐怕您的代码对我不起作用。热键不再工作,使用时会使应用程序崩溃:(也许。我在python 3.5中试过,效果很好。你会遇到什么错误?哪个python版本?显然是2.x,但是是哪一个?我会尝试用线程来实现它……我使用的是python 2.7。我没有遇到任何错误,只是热键不会使应用程序显示或隐藏,当我按下它们时,它会将应用程序置于“无响应”状态。)状态。别担心!我升级到了python 3.6,你的代码现在似乎可以工作了:)谢谢你,尼斯:-)我应该继续尝试线程,因为这是一种挑战,还是已经解决了?嗨,恐怕你的代码对我不起作用。热键不再工作,使用时会使应用程序崩溃:(也许。我在python 3.5中试过,效果很好。你会遇到什么错误?哪个python版本?显然是2.x,但是是哪一个?我会尝试用线程来实现它……我使用的是python 2.7。我没有遇到任何错误,只是热键不会使应用程序显示或隐藏,当我按下它们时,它会将应用程序置于“无响应”状态。)不用担心!我升级到了Python3.6,你的代码现在似乎可以工作了:)谢谢你,尼斯:-)我应该继续尝试线程,因为这是一种挑战,还是解决了这个问题?