Bonjour,
dans le but d'apprendre Python et en faire des applis graphiques j'ai choisi PyQt.
En tant que premier tuto graphique j'ai voulu suivre le tuto d'introduction proposé sur developpez.com mais le souci c'est que j'en suis à l'étape où j’exécute le main et ça ne semble pas marcher.
En fait je n'ai pas d'erreur mais rien ne semble se passer.J'ai effectivement pris la liberté de modifier quelques noms ça et là mais en adaptant en conséquence il n'y a pas de raisons pour que ça ne marche pas.
J'utilise des applis basées sur PyQt et qui marchent très bien et j'ai installé des paquets en plus pour avoir accès aux outils mentionnés (pyuic4) dans le tuto.
Je vous mets une liste des paquets installés qui devraient être en relation avec python et PyQt4. Ma version de python est celle des dépôts soit la 2.6.5 car j'utilise Ubuntu 10.10.
Est-ce qu'il me manquerait quelque chose pour mener à bien le tuto ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 dpkg -l py* | grep -i qt | grep ^ii ii pyqt4-dev-tools 4.7.2-0ubuntu1 Development tools for PyQt4 ii python-qt4 4.7.2-0ubuntu1 Python bindings for Qt4 ii python-qt4-dev 4.7.2-0ubuntu1 Development files for PyQt4
J'avais essayé le tuto une fois en ayant fait une erreur de manipulation qui m'a causé une erreur à cette étape (un form à la place d'un groupbox au moment du design de la fenêtre donc j'ai tout recommencé, c'est pas long.) mais là je me demande pourquoi ça ne se lance pas.
Si je parle de ça c'est parce que selon moi si j'avais introduit une erreur quelconque en codant j'aurais eu un message d'avertissement ou d'erreur.
Pouvez vous m'expliquer ce qui manquerait, ce qui se passe, ce que je ne comprendrait pas par rapport à cette application ?
Merci.
PS : J'ai téléchargé et essayé d'exécuter le source joint en fin de tuto et il me met une erreur :
Merci pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $ python main.py Traceback (most recent call last): File "main.py", line 4, in <module> from PyQt4.QtSql import * ImportError: No module named QtSql
PS bis : Bon j'ai installer le paquet python-qt4-sql et ça s'est lancé même si l'interaction avec la db n'a pas l'air de prendre. J'imagine que le code n'est pas complet enfin peu importe.
Dans ce cas je colle mon code pour voir ce qui ne va pas.
main.py
groupbox.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 import sys from PyQt4.QtCore import * from PyQt4.QtGui import * from groupbox import Ui_GroupBox class NekoHolderApplication(QGroupBox): def __init__(self, parent = None): super (NekoHolderApplication, self).__init__(parent) self.createWidgets() def createWidgets(self): self.ui = Ui_GroupBox() self.ui.setupUi(self) # Setting up database connction for model self.db = QSqlDatabase.addDatabase("QSQLITE"); self.db.setDatabaseName('base.sqlite') self.db.open() # defining a model for the table self.model = QSqlTableModel(self) self.model.setTable("ships"); ID = 0 NAME = 1 self.model.setHeaderData(ID, Qt.Horizontal, "Id") self.model.setHeaderDate(NAME, Qt.Horizontal, "Name") self.model.select() self.ui.tableView.setModel(self.model) if __name__ == "__main___": app = QApplication(sys.argv) myapp = NekoHolderApplication() myapp.show() sys.exit(app.exec_())
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
46
47
48
49
50
51
52
53
54 # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'groupbox.ui' # # Created: Sun Feb 19 18:41:56 2012 # by: PyQt4 UI code generator 4.7.2 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui class Ui_GroupBox(object): def setupUi(self, GroupBox): GroupBox.setObjectName("GroupBox") GroupBox.resize(480, 640) self.gridLayout = QtGui.QGridLayout(GroupBox) self.gridLayout.setObjectName("gridLayout") self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.tbvNekoList = QtGui.QTableView(GroupBox) self.tbvNekoList.setObjectName("tbvNekoList") self.horizontalLayout.addWidget(self.tbvNekoList) self.verticalLayout = QtGui.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") self.lblName = QtGui.QLabel(GroupBox) self.lblName.setObjectName("lblName") self.verticalLayout.addWidget(self.lblName) self.edtName = QtGui.QLineEdit(GroupBox) self.edtName.setObjectName("edtName") self.verticalLayout.addWidget(self.edtName) self.btnNew = QtGui.QPushButton(GroupBox) self.btnNew.setObjectName("btnNew") self.verticalLayout.addWidget(self.btnNew) self.btnSave = QtGui.QPushButton(GroupBox) self.btnSave.setObjectName("btnSave") self.verticalLayout.addWidget(self.btnSave) self.btnDelete = QtGui.QPushButton(GroupBox) self.btnDelete.setObjectName("btnDelete") self.verticalLayout.addWidget(self.btnDelete) spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem) self.horizontalLayout.addLayout(self.verticalLayout) self.gridLayout.addLayout(self.horizontalLayout, 0, 1, 1, 1) self.retranslateUi(GroupBox) QtCore.QMetaObject.connectSlotsByName(GroupBox) def retranslateUi(self, GroupBox): GroupBox.setWindowTitle(QtGui.QApplication.translate("GroupBox", "Neko List Asset Management", None, QtGui.QApplication.UnicodeUTF8)) GroupBox.setTitle(QtGui.QApplication.translate("GroupBox", "Neko List", None, QtGui.QApplication.UnicodeUTF8)) self.lblName.setText(QtGui.QApplication.translate("GroupBox", "Neko name :", None, QtGui.QApplication.UnicodeUTF8)) self.btnNew.setText(QtGui.QApplication.translate("GroupBox", "New", None, QtGui.QApplication.UnicodeUTF8)) self.btnSave.setText(QtGui.QApplication.translate("GroupBox", "Save", None, QtGui.QApplication.UnicodeUTF8)) self.btnDelete.setText(QtGui.QApplication.translate("GroupBox", "Delete", None, QtGui.QApplication.UnicodeUTF8))
Partager