[Código-PyQT4]All in one - JaAViEr(0x5d)

Iniciado por 0x5d, 11 Febrero 2012, 05:11 AM

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

0x5d

Hola, tengan muy buenos días !

 Hoy, pasando por un foro en el cual participo, tocaron un tema sobre PythonQT y me recordé que hace rato que no hacía nada en él y pues tras la perdida de mi otro HDD ni instalado lo tenía en este Debian.
 
 Así que me senté a pensar que codear y se me vino a la mente meter todas las aplicaciones QT4 que he hecho (que son bien pocas) en un solo PyQT4 para acceder a ellas por un boton nada más, así que me puse en marcha y este fue el resultado :
Código (python) [Seleccionar]

# -*- coding: utf-8 -*-
#Autor : 0x5d
#Website : http://www.rootcodes.com
#Twitter : 0x5d

import sys, urllib2, re, urllib
from PyQt4 import QtCore, QtGui, QtWebKit

class all_in_one(QtGui.QWidget):

 def __init__(self, parent=None):

   QtGui.QWidget.__init__(self,parent)
   self.resize(400, 203)
   self.setWindowTitle('Todo en uno PyQT4 - JaAViEr')
   self.boton_extractor = QtGui.QPushButton('Extractor de imagenes', self)
   self.boton_extractor.setGeometry(10, 10, 171, 51)
   self.connect(self.boton_extractor, QtCore.SIGNAL('clicked()'), self.show_extractor)
   self.boton_digitoveri = QtGui.QPushButton('Obtener digito verificador', self)
   self.boton_digitoveri.setGeometry(190, 10, 191, 51)
   self.connect(self.boton_digitoveri, QtCore.SIGNAL('clicked()'), self.show_digitoveri)
   self.boton_calculadorasecuencias = QtGui.QPushButton('Calculadora por secuencias', self)
   self.boton_calculadorasecuencias.setGeometry(10, 70, 201, 51)
   self.connect(self.boton_calculadorasecuencias, QtCore.SIGNAL('clicked()'), self.show_secuencias)
   self.boton_htmlhelper = QtGui.QPushButton('HTML Helper', self)
   self.boton_htmlhelper.setGeometry(10, 130, 101, 51)
   self.connect(self.boton_htmlhelper, QtCore.SIGNAL('clicked()'), self.show_htmlhelper)
   self.boton_twitter = QtGui.QPushButton('Menciones Twitter', self)
   self.boton_twitter.setGeometry(220, 70, 161, 51)
   self.connect(self.boton_twitter, QtCore.SIGNAL('clicked()'), self.show_twitter)
   self.boton_calculadora = QtGui.QPushButton('Calculadora', self)
   self.boton_calculadora.setGeometry(120, 130, 92, 51)
   self.connect(self.boton_calculadora, QtCore.SIGNAL('clicked()'), self.show_calculadora)
   self.boton_versource = QtGui.QPushButton('Ver codigo de fuente', self)
   self.boton_versource.setGeometry(220, 130, 171, 51)
   self.connect(self.boton_versource, QtCore.SIGNAL('clicked()'), self.show_viewsource)

 def show_extractor(self):

   extractor.show()

 def show_digitoveri(self):

   digito.show()

 def show_viewsource(self):

   source.show()

 def show_calculadora(self):

   calculadora.show()

 def show_twitter(self):

   twitter.show()

 def show_htmlhelper(self):

   html_helper.show()

 def show_secuencias(self):

   secuencia.show()

# Inicio Obtener dígito verificador
class ventana_alerta(QtGui.QWidget):

 def __init__(self, parent=None):

   QtGui.QWidget.__init__(self, parent)
   self.resize(283, 31)
   self.setWindowTitle('ALERTA!')

 def message(self, txt):

   self.txt = txt
   self.respuesta = QtGui.QLabel(self.txt, self)
   self.respuesta.setGeometry(10, 10, 260, 17)

class formulario_rut(QtGui.QWidget):

 def __init__(self, parent=None):

   QtGui.QWidget.__init__(self, parent)
   self.setWindowTitle('Digito verificador')
   self.resize(279, 36)
   self.label_rut = QtGui.QLabel('RUT', self)
   self.label_rut.setGeometry(0, 11, 59, 17)
   self.rut = QtGui.QLineEdit(self)
   self.rut.setGeometry(30, 7, 101, 23)
   self.label_verificador = QtGui.QLabel('-', self)
   self.label_verificador.setGeometry(135, 11, 16, 17)
   self.digito = QtGui.QLineEdit(self)
   self.digito.setGeometry(147, 7, 21, 23)
   self.digito.setReadOnly(True)
   self.verificar = QtGui.QPushButton('Verificar', self)
   self.verificar.setGeometry(180, 7, 92, 23)
   self.connect(self.verificar, QtCore.SIGNAL('clicked()'), self.operacion)

 def operacion(self):

   self.rut_valor = str(self.rut.text())
   if len(self.rut_valor) < 8 and len(self.rut_valor) > 9:

     creacion_alerta.message('Ingresa un rut valido por favor')
     creacion_alerta.show()

   else:

     rut = []
     ingresar = [rut.append(numeros) for numeros in self.rut_valor]
     rut.reverse()
     recorrido = 2
     multiplicar = 0

     for x in rut:
       multiplicar+=int(x)*recorrido
       if recorrido==7: recorrido = 1
       recorrido+=1

     modulo = multiplicar%11
     resultado = 11-modulo
     if resultado == 11: digito=0
     elif resultado == 10: digito="K"
     else: digito=resultado
     self.digito.setText(str(digito))
#Fin obtener dígito verificador

#Inicio extractor
class extractor(QtGui.QWidget):

   def __init__(self, parent=None):

     QtGui.QWidget.__init__(self, parent)
     self.resize(602, 514)
     self.setWindowTitle(QtGui.QApplication.translate('self', 'Extractor de imágenes :: JaAViEr (0x5d)', None, QtGui.QApplication.UnicodeUTF8))
     self.label_url = QtGui.QLabel('Url', self)
     self.label_url.setGeometry(10, 15, 21, 16)
     self.input_url = QtGui.QLineEdit(self)
     self.input_url.setGeometry(30, 13, 561, 19)
     self.label_salida = QtGui.QLabel('Salida', self)
     self.label_salida.setGeometry(12, 40, 57, 15)
     self.boton_extraer = QtGui.QPushButton(QtGui.QApplication.translate('self', 'Extraer imágenes', None, QtGui.QApplication.UnicodeUTF8), self)
     self.boton_extraer.setGeometry(469, 37, 121, 20)
     self.connect(self.boton_extraer, QtCore.SIGNAL('clicked()'), self.extraer_todo)
     self.listWidget = QtGui.QListWidget(self)
     self.listWidget.setGeometry(QtCore.QRect(5, 60, 591, 441))
   
   def extraer_todo(self):

     url_imagenes = ""
     clear = ""
     i = 0
     self.web = str(self.input_url.text())
     for imagen in re.findall('<img (.*)>',urllib.urlopen(self.web).read()):
       if "src" in imagen.lower():

         for imagenes in imagen.split():
           if re.findall('src=(.*)',imagenes):

             clear = imagenes[:-1].replace('src=\"','"')
             QtGui.QListWidgetItem(self.listWidget)
             self.listWidget.item(i).setText('%s.- %s'%(i, clear.replace(self.web,'"')))
             i+=1
class secuencia(QtGui.QWidget):

 def __init__(self, parent=None):

   QtGui.QWidget.__init__(self, parent)
   self.resize(411, 60)
   self.setWindowTitle('Calculadora de secuencias :: JaAViEr(0x5d)')
   self.input_secuencia = QtGui.QLineEdit(self)
   self.input_secuencia.setGeometry(80, 5, 321, 21)
   self.label_secuencia = QtGui.QLabel('Secuencia', self)
   self.label_secuencia.setGeometry(5, 2, 71, 31)
   self.boton_ver = QtGui.QPushButton('Ver', self)
   self.boton_ver.setGeometry(323, 30, 81, 21)
   self.input_resultado = QtGui.QLineEdit(self)
   self.input_resultado.setGeometry(80, 30, 240, 21)
   self.input_resultado.setReadOnly(True)
   self.label_resultado = QtGui.QLabel('Resultado', self)
   self.label_resultado.setGeometry(5, 31, 71, 21)
   self.connect(self.boton_ver, QtCore.SIGNAL('clicked()'), self.ejecutar)
 
 def ejecutar(self):

   try:

     self.resultado = str(self.input_secuencia.text())
     self.input_resultado.setText(str(eval(self.resultado)))

   except:

     self.input_resultado.setText(QtGui.QApplication.translate('self', 'Operación inválida', None, QtGui.QApplication.UnicodeUTF8))

class html_helper(QtGui.QMainWindow):

 def __init__(self):

   QtGui.QMainWindow.__init__(self)
#Boton Bold
   self.bold = QtGui.QPushButton('Bold',self)
   self.bold.setGeometry(172,26,41,25)
   self.connect(self.bold,QtCore.SIGNAL('clicked()'), self.make_bold)
#Boton Italic
   self.italic = QtGui.QPushButton('Italic',self)
   self.italic.setGeometry(216,26,41,25)
   self.connect(self.italic,QtCore.SIGNAL('clicked()'), self.make_italic)
#Boton Underline
   self.underline = QtGui.QPushButton('Underline',self)
   self.underline.setGeometry(261,26,63,25)
   self.connect(self.underline,QtCore.SIGNAL('clicked()'), self.make_underline)
#Nuevo menu "Archivo"
   menu_archivo = self.menuBar()
   archivo = menu_archivo.addMenu('&Archivo')
#Menu Abrir
   abrir = QtGui.QAction('&Abrir',self)
   abrir.setShortcut('Ctrl+O')
   archivo.addAction(abrir)
   self.connect(abrir, QtCore.SIGNAL('triggered()'),self.abrir)
#Menu Abrir URL
   abrir_url = QtGui.QAction('Abrir desde &URL',self)
   abrir_url.setShortcut('Ctrl+U')
   archivo.addAction(abrir_url)
   self.connect(abrir_url, QtCore.SIGNAL('triggered()'),self.get_source)
#Menu Guardar
   guardar = QtGui.QAction('&Guardar',self)
   guardar.setShortcut('Ctrl+S')
   archivo.addAction(guardar)
   self.connect(guardar, QtCore.SIGNAL('triggered()'),self.guardar)
#Menu salir
   salida = QtGui.QAction('&Exit', self)
   salida.setShortcut('Ctrl+W')
   archivo.addAction(salida)
   self.connect(salida, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
#Fin del menú Archivo
#Nuevo menú Herramientas
   menu_inputs = self.menuBar()
   herramientas = menu_inputs.addMenu('&Herramientas')
#Menu textarea
   textarea = QtGui.QAction('Agregar &TextArea', self)
   herramientas.addAction(textarea)
   self.connect(textarea, QtCore.SIGNAL('triggered()'), self.add_textarea)
#Menu input
   inputx = QtGui.QAction('Agregar &Input', self)
   herramientas.addAction(inputx)
   self.connect(inputx, QtCore.SIGNAL('triggered()'), self.add_input)
#Menu Boton
   boton = QtGui.QAction('Agregar &Boton', self)
   herramientas.addAction(boton)
   self.connect(boton, QtCore.SIGNAL('triggered()'), self.add_button)
#Menu Imagen
   imagen = QtGui.QAction('Agregar I&magen', self)
   herramientas.addAction(imagen)
   self.connect(imagen, QtCore.SIGNAL('triggered()'), self.add_imagen)
#Menu Cambiar Fondo
   fondo = QtGui.QAction('Color de &Fondo', self)
   herramientas.addAction(fondo)
   self.connect(fondo, QtCore.SIGNAL('triggered()'), self.add_fondo)
#Menu Link
   link = QtGui.QAction('Agregar &Link', self)
   herramientas.addAction(link)
   self.connect(link, QtCore.SIGNAL('triggered()'), self.add_link)
#Fin menú Herramientas
   self.resize(729, 674)
   self.pest_code = QtGui.QTabWidget(self)
   self.pest_code.setGeometry(QtCore.QRect(0, 30, 711, 631))
   self.tab = QtGui.QWidget()
   self.html_plano = QtGui.QPlainTextEdit(self.tab)
   self.html_plano.setGeometry(QtCore.QRect(10, 30, 691, 571))
   self.boton_previw = QtGui.QPushButton('Preview',self.tab)
   self.boton_previw.setGeometry(QtCore.QRect(10, 4,83, 21))
   self.pest_code.addTab(self.tab, '')
   self.tab_2 = QtGui.QWidget()
#Nuevo menú Fuente / Colores
   font_color = self.menuBar()
   fuentes_colores = font_color.addMenu('&Fuente / Colores')
#Menu Buscar Color
   search_color = QtGui.QAction('Buscar Color', self)
   fuentes_colores.addAction(search_color)
   self.connect(search_color, QtCore.SIGNAL('triggered()'), self.find_color)
#Menu buscar Fuente
   search_font = QtGui.QAction('Buscar Fuente', self)
   fuentes_colores.addAction(search_font)
   self.connect(search_font, QtCore.SIGNAL('triggered()'), self.find_font)
   self.vista_web = QtWebKit.QWebView(self.tab_2)
   self.vista_web.setGeometry(QtCore.QRect(10, 10, 691, 591))
   self.pest_code.addTab(self.tab_2, '')
   self.pest_code.setCurrentIndex(0)
   QtCore.QMetaObject.connectSlotsByName(self)
   self.setWindowTitle('Create HTML Helper.')
   self.pest_code.setTabText(self.pest_code.indexOf(self.tab),'Codigo')
   self.pest_code.setTabText(self.pest_code.indexOf(self.tab_2), 'Prevista')
   self.connect(self.boton_previw, QtCore.SIGNAL('clicked()'), self.done)  

 def make_bold(self):

   self.html_final = "%s<br />\n<b></b>"%self.html_plano.toPlainText()
   self.html_plano.setPlainText(self.html_final)  

 def make_italic(self):

   self.html_final = "%s<br />\n<i></i>"%self.html_plano.toPlainText()
   self.html_plano.setPlainText(self.html_final)  

 def make_underline(self):

   self.html_final = "%s<br />\n<u></u>"%self.html_plano.toPlainText()
   self.html_plano.setPlainText(self.html_final)  

 def done(self):

   self.salida = self.html_plano.toPlainText()
   temporal = open('tmp.html','w')
   temporal.write(self.salida)
   temporal.close()
   self.vista_web.setUrl(QtCore.QUrl('tmp.html'))
   self.pest_code.setCurrentIndex(1)

 def guardar(self):

   self.obtener_html = self.html_plano.toPlainText()
   try:

     nombre_save = QtGui.QFileDialog.getSaveFileName(self, 'Guardar Archivo','/home')
     guardando_html = open(nombre_save, 'w')
     guardando_html.write(self.obtener_html)
     guardando_html.close()
     alertas.show()
     alertas.alerta('Advertencia','Guardado!')
   except:

     alertas.show()
     alertas.alerta('Advertencia','No Guardado')

 def abrir(self):

   nombre_open = QtGui.QFileDialog.getOpenFileName(self, 'Abrir Archivo','/home')
   abriendo_html = open(nombre_open, 'r')
   contenido = abriendo_html.read()
   self.html_plano.setPlainText(contenido)

 def add_textarea(self):

   rows, respuesta_rows = QtGui.QInputDialog.getText(self, 'Rows','Numero de Lineas:')
   if respuesta_rows:

     rows = " rows=\"%s\""%str(rows)
   else:

     rows = ""
   cols, respuesta_cols = QtGui.QInputDialog.getText(self, 'Cols','Numero de Columnas:')
   if respuesta_cols:

     cols = " cols=\"%s\""%str(cols)
   else:

     cols = ""
   self.html_final = "%s<br />\n<textarea%s%s></textarea>"%(self.html_plano.toPlainText(),rows,cols)
   self.html_plano.setPlainText(self.html_final)  

 def add_input(self):

   value, respuesta_value = QtGui.QInputDialog.getText(self, 'Valor','Valor por defecto:')
   if respuesta_value:

     value = " value=\"%s\""%str(value)
   else:

     value = ""
   self.html_final = "%s<br />\n<input%s>"%(self.html_plano.toPlainText(),value)
   self.html_plano.setPlainText(self.html_final)  

 def add_button(self):

   button, respuesta_boton = QtGui.QInputDialog.getText(self, 'Valor','Valor del Boton:')
   if respuesta_boton:

     button = " value=\"%s\""%str(button)
   else:

     button = ""
   self.html_final = "%s<br />\n<input  type=\"Submit\"%s>"%(self.html_plano.toPlainText(),button)
   self.html_plano.setPlainText(self.html_final)  

 def add_imagen(self):

   imagen, respuesta_imagen = QtGui.QInputDialog.getText(self, 'Valor','URL de la Imagen:')
   if respuesta_imagen:

     imagen = " src=\"%s\""%str(imagen)
   else:

     imagen = ""
   width, respuesta_width = QtGui.QInputDialog.getText(self, 'Valor','Ancho:')
   if respuesta_width:

     width = " width=\"%s\""%str(width)
   else:

     width = ""
   height, respuesta_height = QtGui.QInputDialog.getText(self, 'Valor','Alto:')
   if respuesta_height:

     height = " height=\"%s\""%str(height)
   else:

     height = ""
   self.html_final = "%s<br />\n<img%s%s%s>"%(self.html_plano.toPlainText(),imagen,width,height)
   self.html_plano.setPlainText(self.html_final)  

 def add_fondo(self):

   color = QtGui.QColorDialog.getColor()
   if color.isValid():

     if not "<body" in self.html_plano.toPlainText():
       self.html_final = "<body bgcolor=\"%s\">%s</body>"%(color.name(),self.html_plano.toPlainText())
       self.html_plano.setPlainText(self.html_final)
     else:

       for i in re.findall('<body bgcolor=\"(.*)\">',self.html_plano.toPlainText()):
         anterior=i
       self.html_final = self.html_plano.toPlainText().replace(anterior,color.name())

       self.html_plano.setPlainText(self.html_final)
   else:

     self.html_final = "<body bgcolor=\"#FFFFFF\">%s</body>"%(self.html_plano.toPlainText())
     self.html_plano.setPlainText(self.html_final)

 def find_color(self):

   busca_color= QtGui.QColorDialog.getColor()
   if busca_color.isValid():
     alertas.show()
     alertas.alerta('Advertencia','Color %s'%busca_color.name())

 def get_source(self):

   url, respuesta_url = QtGui.QInputDialog.getText(self, 'Get','URL:')
   try:

     self.html_plano.setPlainText(urllib2.urlopen(str(url)).read())

   except:

     alertas.show()
     alertas.alerta('Advertencia','Contenido no encontrado')

 def add_link(self):

   link, respuesta_link = QtGui.QInputDialog.getText(self, 'Link','Link:')
   if respuesta_link:

     link = " href=\"%s\""%link

   else:

     link = ""

   name, respuesta_name = QtGui.QInputDialog.getText(self, 'Nombre','Nombre:')
   if respuesta_name:

     name = "%s"%name

   else:

     name = "%s"%link
   self.html_final = "%s<br />\n<a%s>%s</a>"%(self.html_plano.toPlainText(),link,name)
   self.html_plano.setPlainText(self.html_final)  

 def find_font(self):

   QtGui.QFontDialog.getFont()
 
class myalert(QtGui.QMainWindow):

 def __init__(self):

   QtGui.QMainWindow.__init__(self)
   #self.resize(130,50)
   self.setGeometry(400,300,250,50)
   self.label_problema = QtGui.QLabel(self)
   self.label_problema.setGeometry(40,17,180,20)
 
 def alerta(self,error,razon):

   self.setWindowTitle(error)
   self.label_problema.setText(razon)


class twitter(QtGui.QWidget):

 def __init__(self, parent=None):

   QtGui.QWidget.__init__(self,parent)
   cookie = urllib2.HTTPCookieProcessor()
   opener = urllib2.build_opener(cookie)
   urllib2.install_opener(opener)
   self.resize(546, 525)
   self.usuario = QtGui.QLineEdit(self)
   self.usuario.setGeometry(70, 10, 201, 21)
   self.l_usuario = QtGui.QLabel('Usuario :',self)
   self.l_usuario.setGeometry(10, 14, 57, 15)
   self.clave = QtGui.QLineEdit(self)
   self.clave.setGeometry(70, 40, 201, 21)
   self.clave.setEchoMode(QtGui.QLineEdit.Password)
   self.l_clave = QtGui.QLabel('Clave :',self)
   self.l_clave.setGeometry(10, 44, 57, 15)
   self.mencion = QtGui.QTextBrowser(self)
   self.mencion.setGeometry(10, 100, 531, 411)
   self.l_menciones = QtGui.QLabel('Tus Menciones : ',self)
   self.l_menciones.setGeometry(10, 70, 111, 16)
   self.login = QtGui.QPushButton('Ingresar !',self)
   self.login.setGeometry(300, 25, 171, 25)
   self.setWindowTitle('Menciones Twitter - [JaAViEr]')
   self.connect(self.login,QtCore.SIGNAL('clicked()'),self.ingreso)
   self.refresh = QtGui.QPushButton('Refrescar',self)
   self.refresh.setGeometry(0,0,0,0)

 def ingreso(self):

   user=str(self.usuario.text());passwd=str(self.clave.text())
   for token in re.findall('name=\"authenticity_token\" type=\"hidden\" value=\"(.*)\"',urllib2.urlopen('https://mobile.twitter.com/session').read()):
     dato = {'authenticity_token':token,'username':user,'password':passwd}
     urllib2.urlopen('https://mobile.twitter.com/session',urllib.urlencode(dato)).read()
     if "Sign out" in urllib2.urlopen('https://mobile.twitter.com/').read():

       self.refresh.setGeometry(300, 60, 171, 25)
       self.connect(self.refresh,QtCore.SIGNAL('clicked()'),self.mentions)
       self.mentions()
     
 def mentions(self):

   mensaje=""
   for persona,msj in zip(re.findall('<strong><a href=\"(.*)\">(.*)</a></strong>',urllib2.urlopen('https://mobile.twitter.com/replies').read()),re.findall('<span class=\"status\">(.*)</span>',urllib2.urlopen('https://mobile.twitter.com/replies').read())):
     if not persona in ["Find people','Help','Sign out"]:

       mensaje+="<b>%s</b> %s<hr>"%(persona[1],msj)
   self.mencion.setHtml('<body bgcolor=#c0deed><div style=color:black>%s</div>'%mensaje)


class calculadora(QtGui.QWidget):

   def __init__(self, parent=None):

       QtGui.QWidget.__init__(self, parent)
       self.setWindowTitle('Calculadora')
       self.resize(119, 145)
       self.temp=""
       self.igual = QtGui.QPushButton('=',self)
       self.igual.setGeometry(90, 120, 31, 24)
       self.multiplica = QtGui.QPushButton('*',self)
       self.multiplica.setGeometry(0, 120, 31, 24)
       self.connect(self.multiplica,QtCore.SIGNAL('clicked()'),self.multiplicar)
       self.clean = QtGui.QPushButton('AC',self)
       self.clean.setGeometry(30, 120, 31, 24)
       self.connect(self.clean,QtCore.SIGNAL('clicked()'),self.clear)
       self.divide = QtGui.QPushButton('/',self)
       self.connect(self.divide,QtCore.SIGNAL('clicked()'),self.dividir)
       self.divide.setGeometry(0, 90, 31, 24)
       self.connect(self.igual,QtCore.SIGNAL('clicked()'),self.resultado)
       self.resta = QtGui.QPushButton('-',self)
       self.resta.setGeometry(0, 60, 31, 24)
       self.connect(self.resta,QtCore.SIGNAL('clicked()'),self.restar)
       self.suma = QtGui.QPushButton('+',self)
       self.suma.setGeometry(0, 30, 31, 24)
       self.connect(self.suma,QtCore.SIGNAL('clicked()'),self.sumar)
       self.lineEdit = QtGui.QLineEdit(self)
       self.lineEdit.setGeometry(QtCore.QRect(0, 0, 121, 25))
       self.uno = QtGui.QPushButton('1',self)
       self.connect(self.uno,QtCore.SIGNAL('clicked()'),self.inu)
       self.uno.setGeometry(QtCore.QRect(30, 30, 31, 24))
       self.dos = QtGui.QPushButton('2',self)
       self.connect(self.dos,QtCore.SIGNAL('clicked()'),self.ind)
       self.dos.setGeometry(QtCore.QRect(60, 30, 31, 24))
       self.tres = QtGui.QPushButton('3',self)
       self.connect(self.tres,QtCore.SIGNAL('clicked()'),self.intr)
       self.tres.setGeometry(QtCore.QRect(90, 30, 31, 24))
       self.cuatro = QtGui.QPushButton('4',self)
       self.connect(self.cuatro,QtCore.SIGNAL('clicked()'),self.inc)
       self.cuatro.setGeometry(QtCore.QRect(30, 60, 31, 24))
       self.cinco = QtGui.QPushButton('5',self)
       self.connect(self.cinco,QtCore.SIGNAL('clicked()'),self.inci)
       self.cinco.setGeometry(QtCore.QRect(60, 60, 31, 24))
       self.seis = QtGui.QPushButton('6',self)
       self.connect(self.seis,QtCore.SIGNAL('clicked()'),self.ins)
       self.seis.setGeometry(QtCore.QRect(90, 60, 31, 24))
       self.nueve = QtGui.QPushButton('9',self)
       self.connect(self.nueve,QtCore.SIGNAL('clicked()'),self.inn)
       self.nueve.setGeometry(QtCore.QRect(90, 90, 31, 24))
       self.ocho = QtGui.QPushButton('8',self)
       self.connect(self.ocho,QtCore.SIGNAL('clicked()'),self.ino)
       self.ocho.setGeometry(QtCore.QRect(60, 90, 31, 24))
       self.siete = QtGui.QPushButton('7',self)
       self.connect(self.siete,QtCore.SIGNAL('clicked()'),self.insi)
       self.siete.setGeometry(QtCore.QRect(30, 90, 31, 24))
       self.cero = QtGui.QPushButton('0',self)
       self.cero.setGeometry(QtCore.QRect(60, 120, 31, 24))
       self.connect(self.cero,QtCore.SIGNAL('clicked()'),self.ince)

   def clear(self):

     self.temp=""
     self.lineEdit.setText('')

   def restar(self):

     self.temp+="-"
     self.lineEdit.setText(self.temp)

   def dividir(self):

     self.temp+="/"
     self.lineEdit.setText(self.temp)

   def multiplicar(self):

     self.temp+="*"
     self.lineEdit.setText(self.temp)

   def sumar(self):

       self.temp+="+"
       self.lineEdit.setText(self.temp)

   def resultado(self):

       if len(self.temp)>0:

         final=eval(self.temp)
         self.lineEdit.setText(str(final))
         self.temp=str(final)

       else:

         final=eval(str(self.lineEdit.text()))
         print final
         self.lineEdit.setText(str(final))
         self.temp=str(final)

   def inu(self):

       self.temp+="1"
       self.lineEdit.setText(self.temp)

   def ind(self):

       self.temp+="2"
       self.lineEdit.setText(self.temp)

   def intr(self):

       self.temp+="3"
       self.lineEdit.setText(self.temp)

   def inc(self):

       self.temp+="4"
       self.lineEdit.setText(self.temp)

   def inci(self):

       self.temp+="5"
       self.lineEdit.setText(self.temp)

   def ins(self):

       self.temp+="6"
       self.lineEdit.setText(self.temp)

   def insi(self):

       self.temp+="7"
       self.lineEdit.setText(self.temp)

   def ino(self):

       self.temp+="8"
       self.lineEdit.setText(self.temp)

   def inn(self):

       self.temp+="9"
       self.lineEdit.setText(self.temp)

   def ince(self):

       self.temp+="0"
       self.lineEdit.setText(self.temp)


class view_source(QtGui.QWidget):

   def __init__(self, parent=None):

       QtGui.QWidget.__init__(self,parent)
       self.resize(466, 407)
       self.vercode = QtGui.QPushButton('View Source',self)
       self.vercode.setGeometry(200, 380, 105, 24)
       self.http_host = QtGui.QLineEdit(self)
       self.http_host.setGeometry(90, 10, 371, 25)
       self.http_host.setEchoMode(QtGui.QLineEdit.Normal)
       self.url = QtGui.QLabel('Host / URL',self)
       self.url.setGeometry(20, 17, 71, 16)
       self.viewcode = QtGui.QLabel('View Source',self)
       self.viewcode.setGeometry(10, 35, 121, 16)
       self.code = QtGui.QPlainTextEdit(self)
       self.code.setGeometry(0, 50, 461, 331)
       self.code.setFrameShadow(QtGui.QFrame.Raised)
       self.setWindowTitle('View Source - JaAViEr')
       self.connect(self.vercode,QtCore.SIGNAL('clicked()'),self.vista_code)
   
   def vista_code(self):
     
     pagina=urllib2.urlopen(str(self.http_host.text()))
     self.code.setPlainText(pagina.read())

correr = QtGui.QApplication(sys.argv)
formulario = all_in_one()
formulario.show()
calculadora = calculadora()
twitter = twitter()
html_helper = html_helper()
secuencia = secuencia()
extractor = extractor()
digito = formulario_rut()
source = view_source()
correr.exec_()

Screenshot :


Luego es cuestión de dar clic en los botones para utilizar las herramientas !

Fuente : http://rootcodes.com/pyqt4all-in-one-recopilatorio-de-qt4-jaavier

Saludos, Javier
¡ SIGUEME EN TWITTER -> @JavierEsteban__ !