【发布时间】:2020-06-12 16:45:38
【问题描述】:
我正在尝试创建一个文本编辑器,我需要 Ctrl+s、Ctrl+shift+s 和 Ctrl+o 热键来完成其最终更新
我尝试使用 pynput,但它阻止了 tkinter 主循环
你能帮忙吗?
【问题讨论】:
我正在尝试创建一个文本编辑器,我需要 Ctrl+s、Ctrl+shift+s 和 Ctrl+o 热键来完成其最终更新
我尝试使用 pynput,但它阻止了 tkinter 主循环
你能帮忙吗?
【问题讨论】:
from tkinter import *
Master = Tk()
def putcommandhere(event):
print ('hello')
Master.bind('<key>', putcommandhere)
【讨论】:
<Key>,因为每次按键都会触发。一个更好的例子是展示如何专门绑定到 control-s。
TKinter 中没有针对 ctrl+s 之类的热键绑定,但您可以通过两个绑定和一点状态管理将任何热键添加到任何窗口。
from tkinter import *
Master = Tk()
ctrl_pressed = False
def master_key_pressed(event):
# ctrl key pressed
if event.keycode == 17:
ctrl_pressed = True
# 'ctrl+s' pressed
elif event.keycode == 83 and ctrl_pressed:
pass
def master_key_released(event):
# ctrl key released
if event.keycode == 17:
ctrl_pressed = False
Master.bind('<Key>', master_key_pressed)
Master.bind('<KeyReleased>', master_key_released)
有一个partially complete list 的键名。
【讨论】:
复制并运行!它正在工作! Python 3.10
import tkinter as tk
from tkinter import messagebox
window = tk.Tk()
def save_current_file(event=False):
messagebox.showinfo(message='File saved! (fake)')
# hotkey to save current file
window.bind('<Control-s>', save_current_file)
window.mainloop()
【讨论】: