Python 3.x usar tkinter con classes

Iniciado por royer14, Noviembre 14, 2017, 10:36:29 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Hola comunidad, tengo dificultades en esta parte -- como realmente se usan las clases en python con la libreria tkinter,
por ejemplo inicio una clase pero antes de eso necesito definir con cual va ha empezar if __init__=="__main__", por ahi es perfecto, pero como ingreso a clases y es mas como dentro de clases añado widgets  por ejemplo: un menu, button,frame,label, ... y los demas. Aqui confundo cuando añado self a los demas por ejemplo
Código: python

#aqui se inicia con la clase --class inicio(root):
    def complicado():   #que se puede colocar dentro (aqui que puedo colocar)
         print("aqui es donde no consigo")
    ko = ttk.Label(cuadro, text="ko")
    imgk =Image.open("k.png")
    dimgk = ImageTk.PhotoImage(imgk)
    boton = ttk.Button(cuadro, text="ejemplo", command= complicado)

¿como lo hago?, pueden orientarme con estos, o aun mejor pueden hacer un ejemplo de los widget.
estos codigos es una referencia, no lo tomen tan correctos.


Un ejemplo con clase. Espero sea lo que buscas

Código: php

class ventana:
    def __init__(self, master):
        self.master = master
        master.title("PYTHON+TKINTER #2")

        # Mostramos un label en la ventana
        self.lb1 = Label(master, text="Hola mundo. Conociendo Tkinter").pack()

        # Siguiendo con el tutorial anterior N°1 ahora veremos como colocar un  boton y que este haga algo al presionarlo
        # Colocaremos un boton
        self.boton1 = Button(master, text="Presioname", command=self.accion_boton).pack()
        # Vemos que no sucede nada porque no hemos definido lo que el boton hara, para eso colocamos lo siguiente

    def accion_boton(self):
        mensaje = "Boton presionado"
        print(mensaje)


Código: python

import mtTkinter as Tkinter
import Image,ImageTk

IMAGE_LABEL = 'img.jpg'

class MainWindow(Tkinter.Tk):
def __init__(self):
  Tkinter.Tk.__init__(self)
  self.geometry("400x400")
  lista = ("createImage","label")
  for i in lista:
   getattr(self,i)()

def createImage(self):
  openImage = Image.open(IMAGE_LABEL)
  self.image = ImageTk.PhotoImage(openImage)

def label(self):
  self.v = Tkinter.StringVar()
  self.v.set("0%")
  label_1 = Tkinter.Label(self,image=self.image)
  label_1.pack(fill=Tkinter.BOTH,expand=True)

  label_2 = Tkinter.Label(label_1,textvariable=self.v)
  label_2.pack(side="bottom")

window = MainWindow()
window.mainloop()

Yo te recomendaría que usaras mtTkinter que se usa igual que tkinter pero con la diferencia que no tendrás los problemas de congelación del widget al usar por ejemplo un progressbar o tareas que necesiten usar un hilo, pero mejor te recomendaría usar PyQt que es mas actualizada y conas documentación que incluye una gui que ahorra mucho trabajo