Pycante 0.2.1c

Actualicé Pycante el proyecto que ayuda a utilizar de manera cómoda los archivos “.ui” de QtDesigner  los cambios principales son:

  • El proyecto ahora es BEER-WARE… osea es mas libre que antes
  • No esta mas disponible la función “run”, ahora hay que crear la aplicación desde Qt.
  • Ahora hay una función “EDir” que recibe por parámetro un path de un directorio y retorna una función “E” que apunta al mismo (por ejemplo si tenemos todos nuestros archivos “.ui” en /home/tito).
  • La operatoria con files y widgets no cambia con los EDir.

Ejemplos:

import sys

import pycante

from PyQt4 import QtGui

# CONSTANTS
UI = pycante.EDir("path/to/all/my/ui/files/")

# using path "path/to/all/my/ui/files/file.ui"
class Window(UI("file.ui")):

    def on_buttonBox_accepted(self):
        # buttonBox exist inside file.ui
        ...

app = QtGui.QApplication(sys.argv)
w = Window()
w.show()
sys.exit(app.exec_())

Para instalar:

$ pip install pycante

o

$ easy_install pycante

o bajarlo de aca: https://bitbucket.org/leliel12/pycante/

Disclaimers:

  • Lo hice por una necesidad muy puntual
  • El codigo de “W3” no lo probe aunque puede usarse asi pycante
  • Como notaran en ni un momento llame a SetupUi()… eso pycante lo hace solo.

Pycante 0.1a

Hace un tiempo vi u proyecto interesante que se llamaba mu-dev. Me intereso la funcionalidad asi que me contacte con el desar

rollador para colaborar pero el desarrollador me dijo “la colaboración con parches va a estar disponible en un futuro”. Asi que me dije a mi mismo “Puedo hacer algo similar (o mejor)” asi que bueno… asi nació pycante.

Pycante

La idea del proyecto es utilizar de manera comoda los archivos “.ui” de QtDesigner de la siguiente manera:

import pycante

from PyQt import QtGui

# using path
class Window0(pycante.E("path/to/file/window0.ui")):

    def on_buttonBox_accepted(self):
        # buttonBox exist inside "window.ui"
        print "you push accept"

# using file
class Window1(pycante.E(open("path/to/file/window0.ui"))):

    def on_buttonBox_accepted(self):
        # buttonBox exist inside "window.ui"
        print "you push accept"

# using widget
class Window2(pycante.E(QtGui.QDialog)):

    def setupUi(self, Dialog):
        self.buttonBox = QtGui.QDialogButtonBox(Dialog)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName(_fromUtf8("buttonBox"))

        self.retranslateUi(Dialog)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), Dialog.accept)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), Dialog.reject)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None,                QtGui.QApplication.UnicodeUTF8))

    def on_buttonBox_accepted(self):
        # buttonBox exist inside "window.ui"
        print "you push accept"

if __name__ == "__main__":
    w0 = Window0()
    w0.show()

    w1 = Window1()
    w1.show()

    w2 = Window2()
    w2.show()

    pycante.run()

Para instalar:

$ pip install pycante

o

$ easy_install pycante

o bajarlo de aca: https://bitbucket.org/leliel12/pycante/

Disclaimers:

  • Lo hice por una necesidad muy puntual
  • El codigo de “W3” no lo probe aunque puede usarse asi pycante
  • Como notaran en ni un momento llame a SetupUi()… eso pycante lo hace solo.