gpt4 book ai didi

python - 如何使用 Python/Tkinter 进行菜单栏剪切/复制/粘贴

转载 作者:太空狗 更新时间:2023-10-29 22:04:22 25 4
gpt4 key购买 nike

我想制作可以剪切/复制/粘贴所选文本的菜单项(在菜单栏中,而不是在右键单击弹出窗口中)。

等效的键盘命令已经可以使用,而无需我执行任何操作来启用它们。例如,我可以在输入框中输入文本,使用 Control-X 将其剪切,然后使用 Control-C 将其粘贴回(或其他地方)。

我看到的关于该主题的帖子归结为针对单个小部件的剪切/复制/粘贴,但这已经有效。如何让菜单项激活它们?

谢谢。

编辑:需要明确的是,问题是:

  • 如何使用于剪切/复制的菜单项作用于在任何小部件中选择的任何文本
  • 如何让粘贴菜单项在文本光标所在的位置粘贴文本

同样,执行此操作的关键命令(Control-x、Control-c、Control-v)在我没有做任何事情的情况下已经起作用。 我知道如何制作菜单;问题是我应该将什么命令附加到菜单项以达到预期的效果。

编辑 2:好的,我有一个可行的方法。由于关键命令已经起作用,我们可以直接生成它们。在我的例子中,一切都是一个名为 noteBook 的笔记本,所以

lambda: self.noteBook.event_generate('<Control-x>')

随意剪裁。例如:

editmenu.add_command(label="Cut", accelerator="Ctrl+X", command=lambda: self.noteBook.event_generate('<Control-x>'))

使用中:https://github.com/lnmaurer/qubit-control-interface/commit/c08c10a7fbc4a637c1e08358fb9a8593dfdf116e

不过,可能还有更简洁的方法来做到这一点;知道的请回复。

最佳答案

试试这个:source

import Tkinter

def make_menu(w):
global the_menu
the_menu = Tkinter.Menu(w, tearoff=0)
the_menu.add_command(label="Cut")
the_menu.add_command(label="Copy")
the_menu.add_command(label="Paste")

def show_menu(e):
w = e.widget
the_menu.entryconfigure("Cut",
command=lambda: w.event_generate("<<Cut>>"))
the_menu.entryconfigure("Copy",
command=lambda: w.event_generate("<<Copy>>"))
the_menu.entryconfigure("Paste",
command=lambda: w.event_generate("<<Paste>>"))
the_menu.tk.call("tk_popup", the_menu, e.x_root, e.y_root)

t = Tkinter.Tk()
make_menu(t)

e1 = Tkinter.Entry(); e1.pack()
e2 = Tkinter.Entry(); e2.pack()
e1.bind_class("Entry", "<Button-3><ButtonRelease-3>", show_menu)

t.mainloop()

关于python - 如何使用 Python/Tkinter 进行菜单栏剪切/复制/粘贴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8449053/

25 4 0