[Python-es] Programa para pasar de decimal a binario con GUI Qt4

Ramon Villalonga Gómez ramonvillalongagomez en gmail.com
Vie Ago 27 01:09:45 CEST 2010


Buenas, mi nombre es Ramon, tengo 17 años y soy de Mallorca. Me añadí a está
lista hará unos días pero aún no he participado, y hoy, que he empezado con
las GUIs en python, he decidido dar el paso.

Bueno aquí va mi duda:

Cree un programa para convertir de binario a decimal y viceversa a través de
la consola, y he decidido pasarlo a GUI. Pero ahora que lo he pasado, no
encuentro ningún error en el código (es la primera vez que hago una
interfaz), cuando lo arranco desde la consola, hace un salto de línea y se
queda allí, pero no se abre la GUI ni nada.

Añado los archivos por si alguien prefiere bajarlos a verlos desde aquí.

Gracias de antemano.

Este es el archivo "binari.py"

 # -*- coding: utf-8 -*-
>
> import sys
>
> from binarigui import Ui_Form
>
> from PyQt4 import QtCore, QtGui
>
>
>> class Principal(QtGui.QWidget):
>
>   def __init__(self):
>
>     QtGui.QWidget.__init__(self)
>
>
>
>     self.finestra = Ui_Form()
>
>     self.finestra.setupUi(self)
>
>
>
>     self.connect(self.finestra.decimalabinari, QtCore.SIGNAL('clicked()'),
>> self.defdecimalabinari)
>
>     self.connect(self.finestra.binariadecimal, QtCore.SIGNAL('clicked()'),
>> self.defbinariadecimal)
>
>
>
>
>>
>
>
>>   def defdecimalabinari(self):
>
>     if self.textbox.isdigit():
>
>       self.textbox = int(self.textbox)
>
>       self.label_answer = ''
>
>       self.label_error = ''
>
>       if self.textbox == 0:
>
>  label_answer = '0'
>
>       elif self.textbox == 1:
>
>  label_answer = '0'
>
>       else:
>
>  while self.textbox > 0:
>
>   self.label_answer = self.label_answer + str(self.textbox % 2)
>
>   self.textbox = self.textbox // 2
>
>  self.label_answer = self.label_answer[::-1]
>
>  while self.label_answer[0] == '0':
>
>   self.label_answer = self.label_answer[1:]
>
>     else:
>
>  self.label_error = 'Erorr: ha d\'introduir només nombres.'
>
>    def defbinariadecimal(self):
>
>     if self.textbox.isdigit():
>
>       self.textbox = str(self.textbox)
>
>       for z in self.textbox:
>
>  if z != '0' and z != '1':
>
>   self.label_error = 'Error: només zeros i uns'
>
>  else:
>
>   self.label_answer = int()
>
>   index = int(-1)
>
>   for x in self.textbox:
>
>     index = index + 1
>
>   for y in self.textbox:
>
>     self.label_answer = self.label_answer + (int(y) * (2**index))
>
>     index = index - 1
>
>     else:
>
>       self.label_error = 'Error: ha d\'introduir només nombres.'
>
>  def main():
>
>   app = QtGui.QApplication(sys.argv)
>
>   finestra = Principal()
>
>   finestra.show
>
>   sys.exit(app.exec_())
>
>
>
> if __name__ == '__main__':
>
>   main()
>
>
Este es el archivo "binarigui.py" que contiene la GUI creada con Qt
Designer:



# -*- coding: utf-8 -*-


> # Form implementation generated from reading ui file 'Projecte Binari.ui'

#

# Created: Fri Aug 27 00:40:30 2010

#      by: PyQt4 UI code generator 4.7.3

#

# WARNING! All changes made in this file will be lost!


> from PyQt4 import QtCore, QtGui


> class Ui_Form(object):

    def setupUi(self, Form):

        Form.setObjectName("Form")

        Form.resize(354, 113)

        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
> QtGui.QSizePolicy.Fixed)

        sizePolicy.setHorizontalStretch(0)

        sizePolicy.setVerticalStretch(0)

        sizePolicy.setHeightForWidth(Form.sizePolicy().hasHeightForWidth())

        Form.setSizePolicy(sizePolicy)

        Form.setMinimumSize(QtCore.QSize(354, 113))

        Form.setMaximumSize(QtCore.QSize(354, 113))

        Form.setWindowTitle("Conversor Decimal - Binari")

        self.decimalabinari = QtGui.QPushButton(Form)

        self.decimalabinari.setGeometry(QtCore.QRect(211, 10, 131, 27))

        self.decimalabinari.setObjectName("decimalabinari")

        self.binariadecimal = QtGui.QPushButton(Form)

        self.binariadecimal.setGeometry(QtCore.QRect(211, 50, 131, 27))

        self.binariadecimal.setObjectName("binariadecimal")

        self.textbox = QtGui.QTextEdit(Form)

        self.textbox.setGeometry(QtCore.QRect(10, 10, 181, 31))

        self.textbox.setInputMethodHints(QtCore.Qt.ImhDigitsOnly)


>  self.textbox.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)


>  self.textbox.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)

        self.textbox.setAutoFormatting(QtGui.QTextEdit.AutoNone)

        self.textbox.setAcceptRichText(True)

        self.textbox.setObjectName("textbox")

        self.label_answer = QtGui.QLabel(Form)

        self.label_answer.setGeometry(QtCore.QRect(10, 60, 151, 17))

        self.label_answer.setObjectName("label_answer")

        self.label_error = QtGui.QLabel(Form)

        self.label_error.setEnabled(True)

        self.label_error.setGeometry(QtCore.QRect(10, 90, 331, 17))

        font = QtGui.QFont()

        font.setWeight(75)

        font.setBold(True)

        self.label_error.setFont(font)

        self.label_error.setText("")

        self.label_error.setObjectName("label_error")


>         self.retranslateUi(Form)

        QtCore.QMetaObject.connectSlotsByName(Form)


>     def retranslateUi(self, Form):

        self.decimalabinari.setText(QtGui.QApplication.translate("Form",
> "Decimal a Binari", None, QtGui.QApplication.UnicodeUTF8))

        self.binariadecimal.setText(QtGui.QApplication.translate("Form",
> "Binari a Decimal", None, QtGui.QApplication.UnicodeUTF8))

        self.label_answer.setText(QtGui.QApplication.translate("Form",
> "Resultat:", None, QtGui.QApplication.UnicodeUTF8))


Ramon Villalonga
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20100827/55e0f007/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: Projecte Binari.tar.gz
Type: application/x-gzip
Size: 1493 bytes
Desc: no disponible
URL: <http://mail.python.org/pipermail/python-es/attachments/20100827/55e0f007/attachment.bin>


Más información sobre la lista de distribución Python-es