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 Close.
II. Fermer▲
Le fichier Qt Designer est disponible. On peut le transformer en fichier Python exécutable :
pyside-uic quitter.ui -o ui_quitter.py
Une fois le code généré, on peut l'utiliser :
#!/usr/bin/env python
# quitter.py - provide a button to quit this
"program"
import
sys
from PySide.QtGui
import
QMainWindow, QPushButton, QApplication
from ui_quitter import
Ui_MainWindow
class
MainWindow(QMainWindow
, Ui_MainWindow):
def __init__(self, parent=
None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
if
__name__ ==
'__main__':
app =
QApplication
(sys.argv)
frame =
MainWindow()
frame.show()
app.exec_()
Juste pour que ce soit difficile, on a utilisé une procédure alternative pour créer une forme lisible par Python du fichier ui_quitter.py. Le nom de fichier est pratique, car il suffit de se souvenir d'un seul nom : quitter.
Note : si vous n'avez pas les setuptools installés, vous recevrez cette erreur lors de l'exécution de pyside-uic :
Traceback (most recent call last):
File "c:\Python26\Scripts\pyside-uic-script.py", line 5, in <module>
from pkg_resources import load_entry_point
ImportError: No module named pkg_resources
Les setuptools sont librement disponibleslibrement disponibles.
En lançant le programme, vous trouverez qu'il peut être fermé de la manière habituelle par la croix ou bien en cliquant sur le bouton. Voici une image de la GUI :
Maintenant, regardons de plus près le code. Où est le code qui fait que le bouton ferme le programme ? Ce n'est sûrement pas dans le listing.
La raison de cette absence est qu'il a été créé par Qt Designer, qui possède un éditeur de signaux et de slots. On l'a utilisé de manière furtive pour connecter le « signal » PushButton.click() au « slot« MainWindow.close(). Il est inclus dans le fichier quitter.ui et, suite à la conversion, dans ui_quitter.py. Depuis ce fichier, on importe la classe Ui_MainWindow, l'un des ancêtres de notre classe MainWindow. On utilise l'héritage multiple de Python pour faciliter l'utilisation des méthodes dans le module ui_quitter.py.
Il y a toujours d'autres manières de procéder et on pourrait éviter le double héritage, mais pourquoi ne pas l'utiliser quand il est bien commode ? L'hérité creuse de plus en plus profondément dans l'héritage et initialise l'ancêtre immédiatement au-dessus de MainWindow et ainsi l'arbre tout entier.
Vous remarquerez que la méthode init de MainWindow spécifie l'ancêtre à None. C'est le genre d'indication que l'on donne à PySide pour dire que MainWindow est bien la fenêtre principale du programme.
III. Remerciements▲
Merci à Claude Leloup et djibril pour leur relecture attentive !