PDA

View Full Version : Error message PyQt4 QDataWidgetMapper



lpicasso
20th October 2012, 13:50
I´ve being trying different ways, but still getting error message.

Traceback (most recent call last):
File "C:\Users\Home\Desktop\ProdutosComMapper.py", line 87, in <module>
myapp = MyForm()
File "C:\Users\Home\Desktop\ProdutosComMapper.py", line 30, in __init__
self.mapeador.setSubmitPolicy(QDataWidgetMapper.Ma nualSubmit)
NameError: global name 'QDataWidgetMapper' is not defined


My code:

!/usr/bin/env python2
# -*- coding: utf-8 -*-

import sys
import MySQLdb

from PyQt4 import QtSql, QtGui, QtCore

from AddProdutos import *

def createConnection():
db = QtSql.QSqlDatabase.addDatabase('QMYSQL')
db.setHostName('localhost')
db.setDatabaseName('dbshopping')
db.setUserName('root')
db.setPassword('2a3s4d')
db.open()
print (db.lastError().text())
return True

class MyForm(QtGui.QDialog):
recno=0
def __init__(self, parent=None):

QtGui.QWidget.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)

self.mapeador = QtGui.QDataWidgetMapper(self)
self.mapeador.setSubmitPolicy(QDataWidgetMapper.Ma nualSubmit)
self.mapeador.setModel(self.productsModel)
self.mapeador.setItemDelegate(QSqlRelationalDelega te(self))
self.mapeador.addMapping(self.txtIdProd, prod_id)
self.mapeador.addMapping(self.txtProd, prod_name)
self.mapeador.addMapping(self.txtQtd, quantity)
self.mapeador.addMapping(self.txtPreco_2, price)
self.mapper.toFirst()

QtCore.QObject.connect(self.ui.btnFirst, QtCore.SIGNAL('clicked()'), self.dispFirst)
QtCore.QObject.connect(self.ui.btnAnterior, QtCore.SIGNAL('clicked()'), self.dispPrevious)
QtCore.QObject.connect(self.ui.btnUltimo, QtCore.SIGNAL('clicked()'), self.dispLast)
QtCore.QObject.connect(self.ui.btnProximo, QtCore.SIGNAL('clicked()'), self.dispNext)

def dispFirst(self):
MyForm.recno=0
self.record=self.model.record(MyForm.recno)
self.ui.txtIdProd.setText(str(self.record.value("prod_id")))
self.ui.txtProd.setText(self.record.value("prod_name"))
self.ui.txtQtd.setText(str(self.record.value("quantity")))
self.ui.txtPreco_2.setText(str(self.record.value("price")))

def dispPrevious(self):
MyForm.recno-=1
if MyForm.recno <0:
MyForm.recno=self.model.rowCount()-1
self.record=self.model.record(MyForm.recno)
self.ui.txtIdProd.setText(str(self.record.value("prod_id")))
self.ui.txtProd.setText(self.record.value("prod_name"))
self.ui.txtQtd.setText(str(self.record.value("quantity")))
self.ui.txtPreco_2.setText(str(self.record.value("price")))


def dispLast(self):
MyForm.recno=self.model.rowCount()-1
self.record=self.model.record(MyForm.recno)
self.ui.txtIdProd.setText(str(self.record.value("prod_id")))
self.ui.txtProd.setText(self.record.value("prod_name"))
self.ui.txtQtd.setText(str(self.record.value("quantity")))
self.ui.txtPreco_2.setText(str(self.record.value("price")))


def dispNext(self):
MyForm.recno+=1
if MyForm.recno >self.model.rowCount()-1:
MyForm.recno=0
self.record=self.model.record(MyForm.recno)
self.ui.txtIdProd.setText(str(self.record.value("prod_id")))
self.ui.txtProd.setText(self.record.value("prod_name"))
self.ui.txtQtd.setText(str(self.record.value("quantity")))
self.ui.txtPreco_2.setText(str(self.record.value("price")))

#Não mexer daqui pra baixo
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
if not createConnection():
sys.exit(1)
myapp = MyForm()
myapp.show()
sys.exit(app.exec_())