jueves, 11 de agosto de 2016

¿CÓMO CREAR SUBVENTANAS EN PYTHON-PYQT?

Hola en esta entrada explicaré una forma en utilizar subventanas en PyQT utilizando otras interfaces gráficas independientes, en este caso crearé 3 interfaces gráficas diferentes. Utilizaré ejercicios que ya he usado previamente y que también los puede encontrar en el BLOG.

PASO 1: Crear la primera interfaz gráfica y convertir de .ui a .py. Esta interfaz es para escoger si quiero ver un mapa o una imágen.

Se hace la conversión del archivo ejemplo.ui a ejemplo.py
ejemplo.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'ejemplo.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(233, 129)
        self.pushButton = QtGui.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(40, 30, 141, 23))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton_2 = QtGui.QPushButton(Dialog)
        self.pushButton_2.setGeometry(QtCore.QRect(40, 60, 141, 23))
        self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
        self.pushButton.setText(_translate("Dialog", "MAPA", None))
        self.pushButton_2.setText(_translate("Dialog", "IMAGEN", None))

PASO 2: La segunda interfaz gráfica la vamos a tomar de un ejercicio que se hizo anteriormente en el blog (míralo acá: Es el PASO 1). Pero esta vez vamos a modificar el código para activar el botón REGRESAR. Además se debe importar la función de browser que también se encuentra en el ejercicio del link de este paso.

codigo_mapa.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
Código creado por: Gibson Sneyder Ramírez Moreno
correo: sramirez.udea@gmail.com
http://pythoninicios.blogspot.com.co/
'''
import sys
from mapa import *
from PyQt4.QtGui import QApplication
from PyQt4.QtCore import QUrl
from PyQt4.QtWebKit import QWebView
import browser
import subventanas

class showmap(QtGui.QDialog):
    def __init__(self,parent=None):
        QtGui.QWidget.__init__(self,parent)
        QWebView.__init__(self)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
              
        QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL('clicked()'),self.calcular)
        QtCore.QObject.connect(self.ui.pushButton_3, QtCore.SIGNAL('clicked()'),self.regresar)
        QtCore.QObject.connect(self.ui.pushButton_2, QtCore.SIGNAL('clicked()'),self.salir)

    def calcular(self):
        latitud=self.ui.lineEdit.text()
        longitud=self.ui.lineEdit_2.text()
        html=browser.localizacion(latitud,longitud)
        self.ui.webView.setHtml(html)
        
    def regresar(self):
        self.close()
        atras=subventanas.sunw().exec_()
        
        
    def salir(self):
        self.close()
        
if __name__== "__main__":
    app=QtGui.QApplication(sys.argv)
    myapp = showmap()
    myapp.show()
    sys.exit(app.exec_())
PASO 3: Crear la tercera interfaz gráfica y convertir de .ui a .py. Esta interfaz es el ejercicio que permite visualizar imagenes en PYQT que también se hizo anteriormente (míralo acá Es el PASO 1). Pero esta vez vamos a modificar el código para activar el botón REGRESAR.

codigo_foto.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
Código creado por: Gibson Sneyder Ramírez Moreno
correo: sramirez.udea@gmail.com
http://pythoninicios.blogspot.com.co/
'''
import sys
from foto import *
from PyQt4.QtGui import QApplication
from PyQt4.QtCore import QUrl
from PyQt4.QtWebKit import QWebView
import subventanas


class showmap(QtGui.QDialog):
    def __init__(self,parent=None):
        QtGui.QWidget.__init__(self,parent)
        QWebView.__init__(self)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
              
        QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL('clicked()'),self.mostrar)
        QtCore.QObject.connect(self.ui.pushButton_3, QtCore.SIGNAL('clicked()'),self.regresar)
        QtCore.QObject.connect(self.ui.pushButton_2, QtCore.SIGNAL('clicked()'),self.salir)

    def mostrar(self):
        imagen=self.ui.lineEdit.text()
        self.ui.webView.load(QUrl(imagen))
        
    def regresar(self):
        self.close()
        atras=subventanas.sunw().exec_()
        
        
    def salir(self):
        self.close()
        
if __name__== "__main__":
    app=QtGui.QApplication(sys.argv)
    myapp = showmap()
    myapp.show()
    sys.exit(app.exec_())
 PASO 4: Crear el archivo ejecutable.
subventanas.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
Código creado por: Gibson Sneyder Ramírez Moreno
correo: sramirez.udea@gmail.com
http://pythoninicios.blogspot.com.co/
'''
import sys
from ejemplo import *
import codigo_mapa
import codigo_foto

class sunw(QtGui.QDialog):
    def __init__(self,parent=None):
        QtGui.QWidget.__init__(self,parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL('clicked()'),self.mapa)
        QtCore.QObject.connect(self.ui.pushButton_2, QtCore.SIGNAL('clicked()'),self.imagen)
    
    def mapa(self):
        self.close()
        ventana_mapa=codigo_mapa.showmap().exec_()
       

    def imagen(self):
        self.close()
        ventana_image=codigo_foto.showmap().exec_()
        

if __name__== "__main__":
    app=QtGui.QApplication(sys.argv)
    myapp = sunw()
    myapp.show()
    sys.exit(app.exec_())

Para esta entrada voy a mostrar un video para mostrar su funcionamiento. Muchas gracias. Alguna duda estaré atento.





No hay comentarios.:

Publicar un comentario