Jak wyeliminować przesunięcie wciśniętego przycisku po wywołaniu?

Jak wyeliminować przesunięcie wciśniętego przycisku po wywołaniu?
Konrado777
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0

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.

Kopiuj
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()

Spine
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6968
1

O co Ci chodzi?
Że menu kontekstowe pokazuje się gdziekolwiek? A nie tylko na zaznaczonym elemencie?

Znalazłem kod, który oprócz menu kontekstowego zaznacza element pod myszką: https://stackoverflow.com/a/25217053

Konrado777
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0

Naciskasz przycisk i on znika, ale w ułamku sekundy przenosi się wyżej i niknie. To zniknięcie nie następuje w miejscu nacisnięcia po wywołaniu tylko magicznie niknie np 100 pikseli nad wywołaniem,

Spine
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6968
1

screenshot-20240311172112.jpg
Python 3.12.0 (tags/v3.12.0:0fb18b0, Oct 2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)] on win32

Konrado777
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0

Faktycznie u ciebie tego efektu nie ma. U mnie na PyCharmie jest mignięcie tego zamykanego przycisku.
Po kompilacji do exe również jest. Nie mnie to oceniać, ale może to zależne od wersji Pythona czy nawet od OS. Python 3.8.9 i Win7 64
Dzięki za poświęcony czas.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.