[PyQt] (no subject)
Wes Goodenough
mobile at wrgoodenough.com
Sat May 19 03:16:19 BST 2012
Hello. I'm learning PyQt for use with Designer for database applications.
I've been reading all the resources and tutorials, and I have a good amount
of
experience with GUI and Database programming in MS ACCESS. I have finally
decided to put in the effort to lear python and QT but i'm stuck and
need help seeing what I'm doing wrong.
I have Ui_Clients.py generated by Eric from "clients.ui" created by
Designer.
class Ui_MainWindowClients(object):
def setupUi(self, MainWindowClients):
MainWindowClients.setObjectName(_fromUtf8("MainWindowClients"))
MainWindowClients.resize(640, 480)
... etc
Among the widgets is QtGui.QTreeView "ClientTreeView" as follows:
self.ClientTreeView = QtGui.QTreeView(self.centralwidget)
self.ClientTreeView.setGeometry(QtCore.QRect(30, 290, 401, 111))
... etc ending with
self.ClientTreeView.setObjectName(_fromUtf8("ClientTreeView"))
I also have Clients.py as generated by Eric from "clients.ui"
class MainWindowClients(QMainWindow, Ui_MainWindowClients):
SSN, FNAME, LNAME, SEX, RACE, DOB = range(6)
ASC = 0
DESC = 1
def __init__(self, parent = None):
QMainWindow.__init__(self, parent)
self.setupUi(self)
dbType = "QMYSQL"
dbConnect = "clientsdb"
dbName = "clients"
dbTable = "Clients"
dbUname = "root" #because db has been created with user name
dbPW = "" #because db password is not set
db = QSqlDatabase.addDatabase(dbType, dbConnect)
db.setDatabaseName(dbName)
db.setUserName(dbUname)
if not db.open():
QMessageBox.warning(None, "ClientTracking:".join(dbName),
QString("Database Open Error:
%1").arg(db.lastError().text()))
sys.exit(1)
self.clientModel = QSqlTableModel(None, db)
self.clientModel.setTable("Clients")
self.clientModel.setSort(SSN, ASC)
self.clientModel.select()
self.ClientTreeView = QTreeView(self)
self.ClientTreeView.setModel(self.clientModel)
self.ClientTreeView.setGeometry(QtCore.QRect(30, 290, 401, 111))
self.ClientTreeView.show()
@pyqtSignature("QString")
def on_cmbBoxUniqueID_editTextChanged(self, p0):
# TODO: not implemented yet
... etc
My problem is in connecting self.clientModel to self.ClientTreeView.
When i run this code MainWindowClients is painted including ClientTreeView
from Designer (blank), but instead of having the model attached to
Designer's
widget ClientTreeView, a second QTreeview widget is created at default
Geometry.
On a related item, also note... the code snippet in the PyQt documentation
explaining how to use QT Designer with PyQt contains the following for
multiple
inheritance instancing:
The reference to "self.ui.okButton.clicked.connect(self.accept)" is
confusing.
It makes sense for the simple sub-classing of QDialog presented just before,
but
it does not help trying to figure out what my problem is...
from PyQt4.QtGui import QDialog
from ui_imagedialog import Ui_ImageDialog
class ImageDialog(QDialog, Ui_ImageDialog):
def __init__(self):
QDialog.__init__(self)
# Set up the user interface from Designer.
self.setupUi(self)
# Make some local modifications.
self.colorDepthCombo.addItem("2 colors (1 bit per pixel)")
# Connect up the buttons.
self.ui.okButton.clicked.connect(self.accept)
self.ui.cancelButton.clicked.connect(self.reject)
Any help will be appreciated... Thanks. I'm looking forward to using the
power
of PyQt with MySql etc for non-MS bound projects.
Wes
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20120518/efde9a95/attachment-0001.html>
More information about the PyQt
mailing list