WxPython trabaja muy bien en diversas plataformas generando el aspecto nativo de las GUI realizadas con él. El programa es el siguiente:
#! /usr/bin/python import wx, os #modulos para trabajar con el entorno #grafico y el sistema operativo from wx.lib.wordwrap import wordwrap #El mensaje de la licencia de nuestra aplicacion licenceText = "Este es una muestra del poder de python XD" #Tipo de archivos de ejemplo, estos son utilizados para #filtrar por extension al momento de invocar "abrir un archivo" wildcard = "Archivos de audio mp3 (*.mp3)|*.mp3|" \ "Documento de Word (*.doc)|*.doc|"\ "Todos los archivos(*.*)|*.*" #Clase de nuestra ventana de ejemplo class MyFrame(wx.Frame): def __init__(self): """Esta tambien es otra forma de crear comentarios utilizando varias lineas, equivaldria a /** ... */ en Java o C. Este es el metodo constructor que permite inicializar a nuestra ventana, es el equivalente al constructor de Java""" #Llamamos a la clase Frame que construira nuestra ventana wx.Frame.__init__(self,None,-1,"Mi Ventana",size=(400,400)) #El panel de nuestra ventana para poner botones y demas artilugios panel = wx.Panel(self,-1) #Un boton que mostrara un dialogo "Sobre..." b = wx.Button(panel,-1,"Hola Mundo!",(20,10)) #integramaos el boton en la ventana self.Bind(wx.EVT_BUTTON,self.OnButton,b) #Otro boton que abrira un dialogo de abrir un archivo b = wx.Button(panel,-1,"Abrir algun archivo",(20,50)) #igualmente integramos este boton al al panel self.Bind(wx.EVT_BUTTON,self.OnButton2,b) def OnButton(self,evt): """Metodo que reaccionara cuando presionemos el boton Hola Mundo!""" #Creamos el dialogo info = wx.AboutDialogInfo() #le ponemos nombre superior de nuestro dialogo info.Name = "Mi Ventana" #le asignamos la version de nuestra aplicacion info.Version = "1.0" #Un copyright info.Copyright = "(C) Copyright Miguel Pinia" #Una descripcion de nuestra aplicacion info.Description = wordwrap("Este es la informacion sobre la aplicacion: " "esta aplicacion fue hecha en" " python ", 350, wx.ClientDC(self)) #Asignamos la licencia que creamos al principio del documento info.License = wordwrap(licenceText,500,wx.ClientDC(self)) #Desarrolladores de la aplicacion #Nota: Vypi es una mascota XD info.Developers = ["Miguel Pinia","wxPython","Vypi la mascota"] #la que contendra nuestra informacion wx.AboutBox(info) def OnButton2(self,evt): """Este metodo reaccionara al presionar el boton "abrir" generando un evento que permitira crear un dialogo de apertura a nuestro archivo, claramente este archivo seleccionado no hara nada, ya que no vamos a trabajar sobre el, dado que esta es una aplicacion de ejemplo""" #Creamos el dialogo y lo mostramos dlg = wx.FileDialog(self,message="Escoga un archivo",defaultDir = os.getcwd(),defaultFile="",wildcard=wildcard ,style= wx.OPEN | wx.MULTIPLE | wx.CHANGE_DIR) #Si ya seleccionamos el archivo lo unico que haremos sera destruir el dialogo if dlg.ShowModal() == wx.ID_OK: dlg.Destroy if __name__=="__main__": """Metodo main""" app = wx.App() #creamos un objeto de la clase myframe frame = MyFrame() #Lo mostramos hasta que algun evento ocurra frame.Show(True) app.MainLoop()Con esto hemos generado una pequeña aplicación gráfica de manera sencilla, de hecho más rápido y sencillo que otras alternativas en otros lenguajes de programación como Java o C (de hecho, es más sencillo que programar en Swing con Java o GTK+ con C :P). Trabajar con python puede ser más sencillo y enriquecedor, si lo que queremos es aprender a programar. WxPython es muy sencillo de utilizar y muy bonito ver que funciona en las distintas plataformas que existen, para ilustrarlo pondre unas capturas de como trabaja en Windows XP y Ubuntu.
Windows.



Ubuntu:
Aquí es mostrada la apariencia nativa del mismo programa en Ubuntu, aqui se ve claramente que no hubo necesidad de cambiar el código original.
Antes de terminar, les pondré unos cuantos enlaces para mayor información:
- Python (Wikipedia)
- WxPython (Wikipedia)
- Página Oficial de wxPython (en Inglés)
- Organización de widgets en python (blog)
Con esto he terminado esta pequeña reseña sobre como trabajar gráficos en python.
excelente, el más completo que he encontrado.
ResponderEliminarjusto lo que andaba buscando, genio!
ResponderEliminargracias!
Estoy con la idea de realizar un pequeña aplicacion, una de sus funciones es que me detecte que dispositivos como USB o disco duro estan conectados al equipo, pero no he encontrado nada relacionado con eso, si usted sabe me podria hacer el favor de explicarme o decirme que codigo tengo que utilizar (estoy utilizando wxpython).
ResponderEliminarSe lo agradezco.
Hay una biblioteca llamada PyUSB https://walac.github.io/pyusb/ qué te puede dar lo que necesitas, esta biblioteca debería de cubrir todas tus necesidades que tienes.
EliminarPuedes darle una revisada a su tutorial que tienen en github.
https://github.com/walac/pyusb/blob/master/docs/tutorial.rst
Saludos,
Miguel