我發現每當我從英語切換語言俄羅斯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