Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: 0x5d en 6 Abril 2012, 23:39 pm



Título: [Código-PyQT4]Binario a decimal y su inverso - JaAViEr | 0x5d
Publicado por: 0x5d en 6 Abril 2012, 23:39 pm
Hola a todos !

Como le he vuelto a dar la vida a mi PC. Instalé el Debian de nuevo, no podía faltar instalar el amado QT4. Así que me propuse como práctica crear este mismo código Consola ~> [Python]Decimal a binario y su invero (http://rootcodes.com/pythondecimal-a-binario-y-su-inverso), que por cierto también pasé a la web ~> Binary Converter Online (http://0x5d.net.tf/binconverter). Esta vez en PyQT4 primero les dejo el screenshot de como se ve:

(http://rootcodes.com/imagenes/Pantallazo-Bin%20to%20Dec%20|%200x5d.png)
Y Su código :
Código
  1. # -*- coding: utf-8 -*-
  2. # Autor : 0x5d ~> JaAViEr
  3. # Sitio Web ~> www.rootcodes.com
  4. # Twitter ~> @0x5d
  5.  
  6. from PyQt4 import QtGui, QtCore
  7. import sys
  8.  
  9. class testeo(QtGui.QWidget):
  10.  def __init__(self, parent=None):
  11.    QtGui.QWidget.__init__(self, parent)
  12.    self.setWindowTitle("Bin to Dec | 0x5d")
  13.    self.label_binario = QtGui.QLabel("Binario :", self).setGeometry(2,15,59,17)
  14.    self.input_binario = QtGui.QLineEdit(self)
  15.    self.input_binario.setGeometry(60,10,230,27)
  16.    self.label_resultado = QtGui.QLabel("Resultado :", self).setGeometry(2,50,80,17)
  17.    self.input_salida = QtGui.QLineEdit(self)
  18.    self.input_salida.setGeometry(80,43,210,27)
  19.    self.input_salida.setReadOnly(True)
  20.    self.boton_limpiar = QtGui.QPushButton("Limpiar campos", self)
  21.    self.boton_limpiar.setGeometry(1,75,140,27)
  22.    self.boton_convertir = QtGui.QPushButton("Convertir", self)
  23.    self.boton_convertir.setGeometry(145,75,140,27)
  24.    self.connect(self.boton_limpiar, QtCore.SIGNAL("clicked()"), self.clear_inputs)
  25.    self.connect(self.boton_convertir, QtCore.SIGNAL("clicked()"), self.conversor)
  26.  
  27.  def clear_inputs(self):
  28.    self.input_binario.setText("")
  29.    self.input_salida.setText("")
  30.  
  31.  def conversor(self):
  32.    numero = str(self.input_binario.text())
  33.    t = 0
  34.    for i,h in zip(numero[::-1],range(0,len(numero))): t+=int(i)*2**int(h)
  35.    self.input_salida.setText(str(t))
  36.  
  37. app = QtGui.QApplication(sys.argv)
  38. form = testeo()
  39. form.show()
  40. app.exec_()
  41.  
Y Decimal a Binario:
(http://rootcodes.com/imagenes/Pantallazo-Dec%20to%20Bin%20|%200x5d.png)
Código ~>:
Código
  1. # -*- coding: utf-8 -*-
  2. # Autor : 0x5d ~> JaAViEr
  3. # Sitio Web ~> www.rootcodes.com
  4. # Twitter ~> @0x5d
  5.  
  6. from PyQt4 import QtGui, QtCore
  7. import sys
  8.  
  9. class testeo(QtGui.QWidget):
  10.  def __init__(self, parent=None):
  11.    QtGui.QWidget.__init__(self, parent)
  12.    self.setWindowTitle("Dec to Bin | 0x5d")
  13.    self.label_binario = QtGui.QLabel("Decimal:", self).setGeometry(2,15,59,17)
  14.    self.input_binario = QtGui.QLineEdit(self)
  15.    self.input_binario.setGeometry(60,10,230,27)
  16.    self.label_resultado = QtGui.QLabel("Resultado :", self).setGeometry(2,50,80,17)
  17.    self.input_salida = QtGui.QLineEdit(self)
  18.    self.input_salida.setGeometry(80,43,210,27)
  19.    self.input_salida.setReadOnly(True)
  20.    self.boton_limpiar = QtGui.QPushButton("Limpiar campos", self)
  21.    self.boton_limpiar.setGeometry(1,75,140,27)
  22.    self.boton_convertir = QtGui.QPushButton("Convertir", self)
  23.    self.boton_convertir.setGeometry(145,75,140,27)
  24.    self.connect(self.boton_limpiar, QtCore.SIGNAL("clicked()"), self.clear_inputs)
  25.    self.connect(self.boton_convertir, QtCore.SIGNAL("clicked()"), self.conversor)
  26.  
  27.  def clear_inputs(self):
  28.    self.input_binario.setText("")
  29.    self.input_salida.setText("")
  30.  
  31.  def conversor(self):
  32.    resto = []
  33.    nuevo = [int(self.input_binario.text())]
  34.    while nuevo[-1]!=0:
  35.      resto.append(nuevo[-1]%2)
  36.      nuevo.append(nuevo[-1]/2)
  37.    s = ""
  38.    for i in resto[::-1]: s+="%s"%i
  39.    self.input_salida.setText(str(s))
  40.  
  41. app = QtGui.QApplication(sys.argv)
  42. form = testeo()
  43. form.show()
  44. app.exec_()
  45.  

Fuente : http://rootcodes.com/pyqt4binario-a-decimal-y-su-inverso/

Saludos, Javier.