Python 3.x usar tkinter con classes

  • 2 Respuestas
  • 2879 Vistas

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

Desconectado royer14

  • *
  • Underc0der
  • Mensajes: 8
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Python 3.x usar tkinter con classes

  • en: Noviembre 14, 2017, 10:36:29 am
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) [Seleccionar]
#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.

 

Conectado noxonsoftwares

  • *
  • Ex-Staff
  • *****
  • Mensajes: 354
  • Actividad:
    43.33%
  • Country: ar
  • Reputación 10
  • Ayudar es Crecer, Crecer es Mejorar
    • Ver Perfil
    • NOXONSOFTWARES

Re:Python 3.x usar tkinter con classes

  • en: Noviembre 14, 2017, 12:57:58 pm
Un ejemplo con clase. Espero sea lo que buscas

Código: [Seleccionar]
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)

Desconectado $francisco

  • *
  • Underc0der
  • Mensajes: 194
  • Actividad:
    0%
  • Reputación 0
  • Skype: hackloper
    • Ver Perfil
    • Email

Re:Python 3.x usar tkinter con classes

  • en: Noviembre 14, 2017, 07:39:10 pm

Código: (python) [Seleccionar]
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