Po naciśnięciu prawego przycisku myszki i wywołaniu polecenia copy następuje takie mignięcie tego przycisku wyżej niż było wywołanie na elemencie.
Możliwe, że jest to wada tego widgetu, a ja sam nie wiem co z tym zrobić bo to dziwnie wygląda.
import tkinter as tk
from tkinter import ttk
class App:
def __init__(self, root):
self.root = root
self.setup_ui()
def setup_ui(self):
self.tree = ttk.Treeview(self.root, columns=("name", "age"))
self.tree.heading("#0", text="ID")
self.tree.heading("name", text="Name")
self.tree.heading("age", text="Age")
# Dodaj losowe wpisy do Treeview
for i in range(1, 11):
self.tree.insert("", "end", text=str(i), values=(f"Name {i}", 20 + i))
self.tree.pack()
self.tree.bind("<Button-3>", self.popup)
self.popup_menu = tk.Menu(self.root, tearoff=0)
self.popup_menu.add_command(label="Copy", command=self.copy_to_clipboard)
def popup(self, event):
self.popup_menu.tk_popup(event.x_root, event.y_root)
def copy_to_clipboard(self):
selected_item = self.tree.selection()[0]
values = self.tree.item(selected_item)['values']
if values:
row_text = "\t".join(map(str, values))
self.root.clipboard_clear()
self.root.clipboard_append(row_text)
root = tk.Tk()
app = App(root)
root.mainloop()