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
#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
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)
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