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