0

我发现每当我从英语切换语言俄罗斯Tkinter的停止反应以Ctrl键 + ÇCtrl键 + VCtrl键 + X的Python Tkinter的(复制/粘贴不与其他语言的工作)

它仍然工作时,我切换回英文,即使文本是俄语。

我尝试了所有代码片断,我可以在远程堆栈交换中找到与复制粘贴主题相关的东西,添加类似于原始代码的东西,如self.bind('<Control-м>', self.paste)(“м”与俄文中的“v”相同)仍然没有用。

真的很感谢任何帮助/想法如何解决它。

+0

喜单纯。与Python应用程序中的快捷键相关,我使用了一个名为pyHook的库。 (https://pypi.python.org/pypi/pyHook)。请试一试。 – george

回答

0

您可以使用<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() 
0

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()