Discussion:PyQt/QDialog
Ajouter un sujetApparence
Dernier commentaire : il y a 12 ans par JackPotte dans le sujet Message d'erreur
Message d'erreur
[modifier le wikicode]Avec la version PyQt4, ce programme renvoie l'erreur :
ImportError: No module named qt
Si je remplace from qt import * par from PyQt4 import *, j'ai :
NameError: name QApplication is not defined
JackPotte ($♠) 27 mai 2012 à 00:21 (CEST)
from PyQt4.QtGui import *
- -- ◄ David L • discuter ► 27 mai 2012 à 14:13 (CEST)
- Merci, mais je retombe sur un problème quatre lignes plus bas :
NameError: name 'QString' is not defined
- JackPotte ($♠) 27 mai 2012 à 16:09 (CEST)
- Et si j'ajoute from PyQt4.QtCore import *, j'ai encore plus bas un problème, mais cette fois de variable et non plus de type :
NameError: name 's' is not defined
- JackPotte ($♠) 27 mai 2012 à 16:15 (CEST)
- Et en indentant tout dans init il n'y a plus d'erreur mais le programme ne fait rien. JackPotte ($♠) 27 mai 2012 à 16:36 (CEST)
Et que fait ceci ?
#!/usr/bin/python
# -*- coding : utf-8 -*-
#
# qdialog.py
# Programme exemple pour la classe QDialog
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
class Demo(QApplication) :
def init (self,args) :
QApplication.init(self, args)
# dialogue de sélection de fichier
s = QFileDialog.getOpenFileName("", "", None, "Boite d'ouverture de fichier", "Choisissez un fichier")
# conversions nécessaires entre QString et le type str de python
h = QString("<h1>Vous avez choisi le fichier</h1>\n<i>")
h.append(s)
h.append("</i>")
# message d'information sur le fichier sélectionné
QMessageBox.information(None, "Fichier choisi", h)
if __name__ == "__main__" :
x = Demo(sys.argv)
x.exec_()
Si name
(avant-dernière ligne) provoque une erreur, remplaces-le par __name__
.
-- ◄ David L • discuter ► 29 mai 2012 à 23:44 (CEST)
- Je n'obtiens plus d'erreur que si je remplace cette avant-dernière ligne par if __name__ == '__main__':
- Mais le programme ne fait toujours rien. JackPotte ($♠) 31 mai 2012 à 20:23 (CEST)
- J'ai corrigé les 3 dernières lignes dans le code source qui précède.
- -- ◄ David L • discuter ► 31 mai 2012 à 20:58 (CEST)
- Boucle infinie. JackPotte ($♠) 31 mai 2012 à 21:23 (CEST)
Voici le code qui fonctionne de mon coté, sans utiliser de classe :
#!/usr/bin/python
# -*- coding : utf-8 -*-
#
# qdialog.py
# Programme exemple pour la classe QDialog
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
def main(args) :
app=QApplication(args)
# dialogue de sélection de fichier
s = QFileDialog.getOpenFileName(None, "Boite d'ouverture de fichier")
# conversions nécessaires entre QString et le type str de python
h = QString("<h1>Vous avez choisi le fichier</h1>\n<i>")
h.append(s)
h.append("</i>")
# message d'information sur le fichier sélectionné
QMessageBox.information(None, "Fichier choisi", h)
if __name__ == "__main__" :
main(sys.argv)
Et la version avec classe :
#!/usr/bin/python
# -*- coding : utf-8 -*-
#
# qdialog.py
# Programme exemple pour la classe QDialog
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
class Demo(QApplication) :
def __init__ (self,args) :
QApplication.__init__(self, args)
# dialogue de sélection de fichier
s = QFileDialog.getOpenFileName(None, "Boite d'ouverture de fichier")
# conversions nécessaires entre QString et le type str de python
h = QString("<h1>Vous avez choisi le fichier</h1>\n<i>")
h.append(s)
h.append("</i>")
# message d'information sur le fichier sélectionné
QMessageBox.information(None, "Fichier choisi", h)
if __name__ == "__main__" :
x = Demo(sys.argv)
-- ◄ David L • discuter ► 31 mai 2012 à 22:22 (CEST)
- Merci, je te tire mon chapeau. JackPotte ($♠) 31 mai 2012 à 23:52 (CEST)