当我在其中右键单击时,Tkinter会自动将文本粘贴到输入框中。奇怪的是,它从已选择的列表框项目或输入框的突出显示文本中粘贴名称。以下是如何复制问题:
案例I
从列表框中选择项目或生成事件"<<ListboxSelect>>"
后,右键单击任何输入框将粘贴最近选择的列表框项目的名称。当您突出显示某些文本时,问题会自行解决,然后取消突出显示。
案例II
如果某个文字已经从输入框中突出显示,则当您右键单击任何其他输入框时,它将粘贴突出显示的文本。当文本没有突出显示时问题得到解决。
在做了一些研究之后,我发现了一个类似于我over here的问题。看起来这是一个在OS X而不是其他系统上发生的事件(我可能会弄错,我主要使用Macintosh)。有这个问题的解决方案吗?我对 case II 中的示例并不太担心,但在 case I 中更是如此。
以下是我编写的一些复制问题的代码:
import tkinter as tk
from tkinter import ttk
def generate_event(event=None):
root.event_generate("<<ListboxSelect>>")
list.select_set("end")
list.activate("anchor")
root = tk.Tk()
list = tk.Listbox(root)
list.pack()
text_var = tk.StringVar() # I used a StringVar because that is what is used in my original code.
text_box = ttk.Entry(root, textvariable=text_var)
text_box.pack()
button = ttk.Button(text="Press me!", command=generate_event)
button.pack()
list.insert("end", "Test")
list.insert("end", "Hello")
root.mainloop()
我是如何尝试解决问题的:
我尝试使用clipboard_clear()
清除剪贴板,但似乎剪贴板与问题无关。我尝试使用<Button-2>
停用<Button-3>
和unbind_all()
。我甚至尝试过使用上面提供的链接解决方案(我可能没有正确实现)。
Python版本:3.4
操作系统:约塞米蒂