Python tkinter(复制/粘贴不适用于其他语言)

Python tkinter(复制/粘贴不适用于其他语言),python,tkinter,keyboard-shortcuts,copy-paste,keyboard-events,Python,Tkinter,Keyboard Shortcuts,Copy Paste,Keyboard Events,我发现,每当我将语言从英语切换到俄语时,tkinter就会停止对Ctrl+C、Ctrl+V或Ctrl+X的反应 当我切换回英语时,它仍然有效,即使文本是俄语 我尝试了在stack exchange上找到的所有与复制粘贴主题远程相关的代码片段,添加了类似于原始代码的内容,如self.bind(“”,self.paste)(“М”在俄语中是与英语中的“v”相同的按钮),但仍然没有任何效果 如果您有任何关于如何修复它的帮助/想法,我将不胜感激。您可以使用来检查按下Control-mm时使用的keyco

我发现,每当我将语言从英语切换到俄语时,tkinter就会停止对Ctrl+C、Ctrl+V或Ctrl+X的反应

当我切换回英语时,它仍然有效,即使文本是俄语

我尝试了在stack exchange上找到的所有与复制粘贴主题远程相关的代码片段,添加了类似于原始代码的内容,如
self.bind(“”,self.paste)
(“М”在俄语中是与英语中的“v”相同的按钮),但仍然没有任何效果

如果您有任何关于如何修复它的帮助/想法,我将不胜感激。

您可以使用
来检查按下
Control-mm
时使用的
keycode
,然后使用它在页面上查找
keycym
。也许您必须使用

将tkinter作为tk导入
def副本(事件):
打印('副本')
def粘贴(事件):
打印('粘贴')
def测试(事件):
打印('event.char:',event.char)
打印('event.keycode:',event.keycode)
打印('event.keysym:',event.keysym)
打印('--')
root=tk.tk()
root.bind(“”,测试)
root.bind(“”,复制)
root.bind(“”,粘贴)
root.bind(“”,粘贴)
root.mainloop()
您可以使用
检查按下
Control-mm
时使用的
keycode
,然后使用它在页面上查找
keycom
。也许您必须使用

将tkinter作为tk导入
def副本(事件):
打印('副本')
def粘贴(事件):
打印('粘贴')
def测试(事件):
打印('event.char:',event.char)
打印('event.keycode:',event.keycode)
打印('event.keysym:',event.keysym)
打印('--')
root=tk.tk()
root.bind(“”,测试)
root.bind(“”,复制)
root.bind(“”,粘贴)
root.bind(“”,粘贴)
root.mainloop()

从Tkinter导入Tk,输入
def_onKeyRelease(事件):
ctrl=(event.state和0x4)!=0
如果event.keycode==88,并且ctrl和event.keysym.lower()“x”:
event.widget.event\u generate(“”)
如果event.keycode==86,并且ctrl和event.keysym.lower()“五”:
event.widget.event\u generate(“”)
如果event.keycode==67,并且ctrl和event.keysym.lower()“c”:
event.widget.event\u generate(“”)
master=Tk()
主几何(“500x500+1+1”)
master.bind_all(“,_onkeyrease,“+”)
条目(主).pack()
条目(主).pack()
条目(主).pack()
master.mainloop()

从Tkinter导入Tk,输入
def_onKeyRelease(事件):
ctrl=(event.state和0x4)!=0
如果event.keycode==88,并且ctrl和event.keysym.lower()“x”:
event.widget.event\u generate(“”)
如果event.keycode==86,并且ctrl和event.keysym.lower()“五”:
event.widget.event\u generate(“”)
如果event.keycode==67,并且ctrl和event.keysym.lower()“c”:
event.widget.event\u generate(“”)
master=Tk()
主几何(“500x500+1+1”)
master.bind_all(“,_onkeyrease,“+”)
条目(主).pack()
条目(主).pack()
条目(主).pack()
master.mainloop()
我这样做了

1.根据以下人员的建议,首先收到当前布局语言:

二,。然后,我在考虑布局的情况下定义了keys()方法,因为在英文布局的情况下,如果没有条件,该方法在插入时会给出一个重复的字符串:

    def keys(event):
        if self.is_ru_lang_keyboard():
            if event.keycode==86:
                event.widget.event_generate("<<Paste>>")
            if event.keycode==67: 
                event.widget.event_generate("<<Copy>>")    
            if event.keycode==88: 
                event.widget.event_generate("<<Cut>>")    
            if event.keycode==65535: 
                event.widget.event_generate("<<Clear>>")
            if event.keycode==65: 
                event.widget.event_generate("<<SelectAll>>")
def键(事件):
如果self.is_ru_lang_keyboard():
如果event.keycode==86:
event.widget.event\u generate(“”)
如果event.keycode==67:
event.widget.event\u generate(“”)
如果event.keycode==88:
event.widget.event\u generate(“”)
如果event.keycode==65535:
event.widget.event\u generate(“”)
如果event.keycode==65:
event.widget.event\u generate(“”)
3.将输入字段的keys()方法绑定到“Control KeyPress”事件:

self.my_entry.bind(“,键)
我这样做了

1.根据以下人员的建议,首先收到当前布局语言:

二,。然后,我在考虑布局的情况下定义了keys()方法,因为在英文布局的情况下,如果没有条件,该方法在插入时会给出一个重复的字符串:

    def keys(event):
        if self.is_ru_lang_keyboard():
            if event.keycode==86:
                event.widget.event_generate("<<Paste>>")
            if event.keycode==67: 
                event.widget.event_generate("<<Copy>>")    
            if event.keycode==88: 
                event.widget.event_generate("<<Cut>>")    
            if event.keycode==65535: 
                event.widget.event_generate("<<Clear>>")
            if event.keycode==65: 
                event.widget.event_generate("<<SelectAll>>")
def键(事件):
如果self.is_ru_lang_keyboard():
如果event.keycode==86:
event.widget.event\u generate(“”)
如果event.keycode==67:
event.widget.event\u generate(“”)
如果event.keycode==88:
event.widget.event\u generate(“”)
如果event.keycode==65535:
event.widget.event\u generate(“”)
如果event.keycode==65:
event.widget.event\u generate(“”)
3.将输入字段的keys()方法绑定到“Control KeyPress”事件:

self.my_entry.bind(“,键)

你好。与python应用程序中的快捷键相关,我使用了一个名为pyHook的库。(). 请试一试。与python应用程序中的快捷键相关,我使用了一个名为pyHook的库。(). 请试一试。
def is_ru_lang_keyboard(self):
    u = ctypes.windll.LoadLibrary("user32.dll")
    pf = getattr(u, "GetKeyboardLayout")
    return hex(pf(0)) == '0x4190419'
    def keys(event):
        if self.is_ru_lang_keyboard():
            if event.keycode==86:
                event.widget.event_generate("<<Paste>>")
            if event.keycode==67: 
                event.widget.event_generate("<<Copy>>")    
            if event.keycode==88: 
                event.widget.event_generate("<<Cut>>")    
            if event.keycode==65535: 
                event.widget.event_generate("<<Clear>>")
            if event.keycode==65: 
                event.widget.event_generate("<<SelectAll>>")
self.my_entry.bind("<Control-KeyPress>", keys)