PySide Simplissimus : autre combinaison

PySide Simplissimus : des tutoriels d'une dizaine de minutes pour un débutant par un débutant

On peut combiner les trois scripts d'une autre manière que montré précédemment.

7 commentaires Donner une note à l'article (5)

Article lu   fois.

Les deux auteurs

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. L'article original

Le Qt Developer Network est un réseau de développeurs utilisant Qt afin de partager leur savoir sur ce framework. Vous pouvez le consulter en anglais.

Nokia, Qt, Qt Quarterly et leurs logos sont des marques déposées de Nokia Corporation en Finlande et/ou dans les autres pays. Les autres marques déposées sont détenues par leurs propriétaires respectifs.

Cet article est la traduction de Alternative Combine.

II. Une autre combinaison

On va appeler ce programme combine_alter.py. En fait, il ne fait ni plus, ni moins que le programme précédent, combine.py. Il le fait cependant d'une manière différente, en évitant l'héritage multiple. Bien qu'il soit une fonctionnalité bien pratique de Python, l'héritage multiple est souvent décrié par les développeurs, particulièrement ceux venant d'un autre langage, où cela n'est pas possible.

Même si le début se basait sur cet héritage multiple, on va montrer ici comment faire autrement. Les fichiers Qt Designer et de ressources restent inchangés par rapport à la version précédente.

combine_alter.py n'est pas très différent de la version précédente. On change une ligne d'importation pour ui_combine, bien que ce changement ne soit qu'esthétique. Une variable locale ui est introduite, dès l'initialisation. Comme elle est utilisée ailleurs que dans le constructeur, on la stocke dans une variable de classe (variable membre). Ceci devrait être très commun pour des programmeurs Python, comme les arguments du constructeur passent souvent dans des variables membres.

 
Sélectionnez
#!/usr/bin/env python
# combine_alter.py - combination of ShowGPL, About, Close scripts
 
import sys
import platform
 
import PySide
from PySide.QtGui import QApplication, QMainWindow, QTextEdit, QPushButton,\
                         QMessageBox,  QIcon
 
__version__ = '0.0.0'
from ui_combine import Ui_MainWindow as Ui
import qrc_combine
 
class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        ui = Ui()
        # Store ui as class variable self.ui
        self.ui = ui
        ui.setupUi(self)
        ui.actionShow_GPL.triggered.connect(self.showGPL)
        ui.action_About.triggered.connect(self.about)        
        iconToolBar = self.addToolBar("iconBar.png") 
        ui.actionShow_GPL.setIcon(QIcon(":/showgpl.png"))
        ui.action_About.setIcon(QIcon(":/about.png"))
        ui.action_Close.setIcon(QIcon(":/quit.png"))
        ui.actionShow_GPL.setStatusTip("Show GPL Licence")
        ui.action_About.setStatusTip("Pop up the About dialog.")
        ui.action_Close.setStatusTip("Close the program.")      
        iconToolBar.addAction(ui.actionShow_GPL)
        iconToolBar.addAction(ui.action_About)
        iconToolBar.addAction(ui.action_Close)
         
    def showGPL(self):
        '''Read and display GPL licence.'''
        self.ui.textEdit.setText(open('COPYING.txt').read())
         
    def about(self):
        '''Popup a box with about message.'''
        QMessageBox.about(self, "About PyQt, Platform and the like",
                """<b> About this program </b> v %s
                <p>Copyright © 2010 Joe Bloggs. 
                All rights reserved in accordance with
                GPL v2 or later - NO WARRANTIES!
                <p>This application can be used for
                displaying OS and platform details.
                <p>Python %s -  PySide version %s - Qt version %s on %s""" % \
                (__version__, platform.python_version(), PySide.__version__,\
                 PySide.QtCore.__version__, platform.system()))       
         
if __name__ == '__main__':
    app = QApplication(sys.argv)
    frame = MainWindow()
    frame.show()
    app.exec_()

Simplement, c'est une question de goût : avec ou sans l'héritage multiple. Il pourrait être plus simple d'adopter l'une ou l'autre. Quoi qu'il en soit, comme on peut les rencontrer à la lecture de tout programme, il est bon de connaître les deux méthodes.

III. Remerciements

Merci à Claude Leloup pour sa relecture attentive !

PySide Simplissimus
PySide Simplissimus
Fermer
À propos
La licence
Combiner la licence, à propos et fermer
Autre combinaison
Tout en un
Une application d'ingénierie
  

Copyright © 2011 Developpez.com Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.