当不应该

时间:2015-09-24 18:02:00

标签: python macos tkinter listbox paste

当我在其中右键单击时,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

操作系统:约塞米蒂

0 个答案:

没有答案