Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Celda de treeview como BOTON
#1
Buenas tengo un treeview con varias columnas y me gustaría añadir otra mas en la que haya botones. He estado mirando que el widget treeview no permite insertar botones como tal, como podría crear una columna cuyas celdas actúen como botones, es decir que cuando se haga clic se dispare un evento creado por mi y pueda obtener información de la fila en la cual se ha hecho clic. Adjunto una imagen para hacerse una idea de lo que quiero. Un saludo y gracias.


Archivos adjuntos Miniatura(s)
   
Responder
#2
Hola, no es posible incluir otros controles de Tk dentro de una celda de una vista de árbol.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
creo que se puede hacer como si imitases los links (href) del HTML. No estoy muy seguro de que te funcione, pero puedes probar.

se trata de que en cada widget que desees que sea "clicable", deberás generar un bind. Por ejemplo:

Código:
self.tree.bind("<Double-1>", self.enlace)

ahora el metodo dentro de la clase:

Código:
def enlace(self, event):
   input_id = self.tree.selection()
   self.input_item = self.tree.item(input_id,"text")

   # ahora lo que queramos
Edito:
Un ejemplo completo que acabo de ver en la inet:

Código:
https://stackoverflow.com/questions/3794268/command-for-clicking-on-the-items-of-a-tkinter-treeview-widget

import tkinter as tk
import tkinter.ttk as ttk

class App:
   def __init__(self):
       self.root = tk.Tk()
       self.tree = ttk.Treeview()
       self.tree.pack()
       for i in range(10):
           self.tree.insert("", "end", text="Item %s" % i)
       self.tree.bind("<Double-1>", self.OnDoubleClick)
       self.root.mainloop()

   def OnDoubleClick(self, event):
       item = self.tree.identify('item',event.x,event.y)
       print("you clicked on", self.tree.item(item,"text"))

if __name__ == "__main__":
   app = App()
Responder


Salto de foro:


Usuarios navegando en este tema: 2 invitado(s)