October 31, 2010

python TK!

Para la Dra Schaeffer 
Lab de lenguajes    Jueves V1


aqui les dejare un código de python utilizando el modulo TK para realizar diseños gráficos. Realize el código viendo tutoriales en internet. Hasta el momento no he realizado mucho pero les puede ser de gran ayuda para sus proyectos. El programa lo que hasta el momento hace es que crea la ventana tiene una barra de menu, pestañas y botones, tambien detecta el movimiento del mouse y los clicks del mouse. El código ciene con comentarios para que lo puedan entender mejor.


#!/usr/bin/python

from Tkinter import*  #importamos el modulo Tkinter de python
import os

root = Tk()  # realiza la base de nuestro programa en Tk


frame = Frame(root, width = 500, height = 500) # creamos una ventana


root.mainloop() # ciclamos el programa para que la ventana se mantenga abierta


Hasta aqui obtendran una ventana como la siguiente:



Despues de --> frame = Frame(root, width = 500, height = 500) agregamos el siguiente codigo:


frame.pack()  # se anade para cuando se cicle el programa

  # x, y y z son clases
x = Label(root,text='pestana') # root es para cuando el programa se cicle; text es el texto que aparecera en la pestana
x.pack() # se debe unir al pack o paquete de frame
y = Button(root,text='boton') # de igual forma root es para ciclar y text es el texto del boton. No hace nada al darle clik porque no tiene comando
y.pack()
z = Button(root,text='salir', command = frame.quit) # aqui tiene el comando de salida que es frame.quit, que cierra el programa
z.pack()

Esto debe ir antes de --> root.mainloop()   para que el programa se cicle y la ventana siga abierta. ejecuntenlo y tendran una ventana con una etiqueta y dos botones. La ventana sera como la siguiente:



Despues de la linea --> z.pack()   agregaremos el siguiente codigo:


#crear una barra de menu
menu = Menu(root) # menu es una variable y Menu es ela clase
root.config(menu=menu)
primerMenu = Menu(menu) # se declara que primermenu es un menu
menu.add_cascade(label = 'nuevo', menu = primerMenu) # hace que la barra de menu tenga menus en forma de cascada. label =  el nombre que desees

primerMenu.add_command(label = 'crear', command = 0) # primerMenu.add_command () es para anadir un comando al submenu en cascada
primerMenu.add_command(label = 'abrir', command = 0) # label =  para el nombre que se desee poner
primerMenu.add_command(label = 'editar', command = 0) # command = 0 porque no hace nada hasta ahorita
primerMenu.add_separator() # para separar ciertos submenus de otros
primerMenu.add_command(label = 'salir', command = frame.quit) # command = frame.quit  para salir



De igual manera este codigo debe estar antes de --> z.pack()

Lo que hicimos ahora fue crear una barra de menus. El menu estara en forma de cascada y tendra algunos botones. Se vera de la siguiente manera:



Donde al darle click al menu llamado nuevo se abriran los submenus

Por ultimo crearemos las funciones para que el programa detecte el movimiento del mouse y sus clicks

Despues de --> primerMenu.add_command(label = 'salir', command = frame.quit) , agregaremos lo siguiente:

#funciones de mouse
def mousemov(pos):
    os.system("clear") #limpia la pantalla
    print"posicion del mouse: ", pos.x, pos.y

def click(pos):
    os.system("clear")
    print "posicion al dar click: ", pos.x, pos.y  # pos.x y pos.y indicaran la posicion en la que se encuentra el cursor

def dobclick(pos):
    os.system("clear")
    print "Posicion al dar doble click: ", pos.x, pos.y  # imprime en la consola la posicion del mouse

def tripclick(pos):
    os.system("clear")
    print "posicion al dar triple click: ", pos.x, pos.y

def enter(pos):
    os.system("clear")
    print "enter"

def salir(pos):
    os.system("clear")
    print "salir"

# rutinas del mouse en el programa
#el metodo frame.bin se compone de dos partes, una etiqueta y una funcion
frame.bind("<Motion>",mousemov) # la etiqueta <Motion> es para detectar movimientos del mouse en la ventana
frame.bind("<Button-1>",click)
frame.bind("<Double-Button-1>",dobclick)
frame.bind("<Triple-Button-1>",tripclick)
frame.bind("<Enter>", enter)
frame.bind("<Leave>", )


De igual manera esto va antes de --> root.mainloop()

En mi caso yo puse las funciones del mouse despues de --> root = Tk()

Lo que tendremos ahora sera que en la consola se imprimira la posicion del cursor asi como tambien la posicion del cursor al darle click, doble click, triple click o click derecho




es lo que hasta el momento he realizado con los tutoriales que he leido. Espero les sea de gran ayuda y seguire subiendo post sobre este tema a medida que vaya avanzando. cualquier duda comenten

1 comment: