我发现每当我从英语切换语言俄罗斯Tkinter的停止反应以Ctrl键 + Ç,Ctrl键 + V或Ctrl键 + X。的Python Tkinter的(复制/粘贴不与其他语言的工作)
它仍然工作时,我切换回英文,即使文本是俄语。
我尝试了所有代码片断,我可以在远程堆栈交换中找到与复制粘贴主题相关的东西,添加类似于原始代码的东西,如self.bind('<Control-м>', self.paste)
(“м”与俄文中的“v”相同)仍然没有用。
真的很感谢任何帮助/想法如何解决它。
我发现每当我从英语切换语言俄罗斯Tkinter的停止反应以Ctrl键 + Ç,Ctrl键 + V或Ctrl键 + X。的Python Tkinter的(复制/粘贴不与其他语言的工作)
它仍然工作时,我切换回英文,即使文本是俄语。
我尝试了所有代码片断,我可以在远程堆栈交换中找到与复制粘贴主题相关的东西,添加类似于原始代码的东西,如self.bind('<Control-м>', self.paste)
(“м”与俄文中的“v”相同)仍然没有用。
真的很感谢任何帮助/想法如何解决它。
您可以使用<Key>
检查时按Control-м
什么keycode
使用,然后用它来寻找keysym
页面上像Tcl/Tk - keysym。也许你将不得不使用<Control-Cyrillic_em>
import tkinter as tk
def copy(event):
print('copy')
def paste(event):
print('paste')
def test(event):
print('event.char:', event.char)
print('event.keycode:', event.keycode)
print('event.keysym:', event.keysym)
print('---')
root = tk.Tk()
root.bind('<Key>', test)
root.bind('<Control-c>', copy)
root.bind('<Control-v>', paste)
root.bind('<Control-Cyrillic_em>', paste)
root.mainloop()
from Tkinter import Tk, Entry
def _onKeyRelease(event):
ctrl = (event.state & 0x4) != 0
if event.keycode==88 and ctrl and event.keysym.lower() != "x":
event.widget.event_generate("<<Cut>>")
if event.keycode==86 and ctrl and event.keysym.lower() != "v":
event.widget.event_generate("<<Paste>>")
if event.keycode==67 and ctrl and event.keysym.lower() != "c":
event.widget.event_generate("<<Copy>>")
master = Tk()
master.geometry("500x500+1+1")
master.bind_all("<Key>", _onKeyRelease, "+")
Entry(master).pack()
Entry(master).pack()
Entry(master).pack()
master.mainloop()
喜单纯。与Python应用程序中的快捷键相关,我使用了一个名为pyHook的库。 (https://pypi.python.org/pypi/pyHook)。请试一试。 – george