Python Tkinter 通过热键隐藏和显示 window
Python Tkinter hide and show window via hotkeys
我正在尝试编写一个可以通过热键隐藏和显示的程序。我设法使用库 "keyboard" 使应用程序显示和隐藏,但是由于库的 "wait" 功能,它会阻止文本框正常运行。我曾尝试在 Tkinter 中使用键绑定,但是我遇到了一个不同的问题,一旦程序被隐藏或选择了另一个应用程序,我就无法 return 通过热键。
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()
任何帮助都会很棒 :)
只需删除此等待命令,它是一个额外的主循环,在 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 中的那些进行测试是不可能的!它总是尝试 "save as...",而我不想...
我正在尝试编写一个可以通过热键隐藏和显示的程序。我设法使用库 "keyboard" 使应用程序显示和隐藏,但是由于库的 "wait" 功能,它会阻止文本框正常运行。我曾尝试在 Tkinter 中使用键绑定,但是我遇到了一个不同的问题,一旦程序被隐藏或选择了另一个应用程序,我就无法 return 通过热键。
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()
任何帮助都会很棒 :)
只需删除此等待命令,它是一个额外的主循环,在 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 中的那些进行测试是不可能的!它总是尝试 "save as...",而我不想...