qt - How to add data to a created form? PyQt/Python/SQL -
i have created basic form layout using splitters qlistwidget , qtextbrowser. wanted know how import data sql database (or add simple text i.e. string) listwidget boxes. once user clicks on piece of data within listwidget box, how show (in detail) expansion of data in textbrowser box?? also, how fix splitter, user cannot move, adjust splitters??
the code below:
import sys, random, time, math, re pyqt4 import qtgui, qtcore class mainwindow(qtgui.qmainwindow): def __init__(self, parent=none): super(mainwindow, self).__init__(parent) self.grouplist = qtgui.qlistwidget() self.messagelist = qtgui.qlistwidget() self.messageview = qtgui.qtextbrowser() self.messagesplitter = qtgui.qsplitter(qtcore.qt.vertical) self.messagesplitter.addwidget(self.messagelist) self.messagesplitter.addwidget(self.messageview) self.mainsplitter = qtgui.qsplitter(qtcore.qt.horizontal) self.mainsplitter.addwidget(self.grouplist) self.mainsplitter.addwidget(self.messagesplitter) self.setcentralwidget(self.mainsplitter) self.mainsplitter.setstretchfactor(0, 1) self.mainsplitter.setstretchfactor(1, 3) self.messagesplitter.setstretchfactor(0 ,1) self.messagesplitter.setstretchfactor(1, 2) def closeevent(self, event): if self.oktocontinue(): settings = qtgui.qsettings() settings.setvalue("mainwindow/size", qvariant(self.size())) settings.setvalue("mainwindow/position", qvariant(self.pos())) settings.setvalue("mainwindow/state", qvariant(self.savestate())) settings.setvalue("messagesplitter", qvariant(self.messagesplitter.savestate())) settings.setvalue("mainsplitter", qvariant(self.mansplitter.savestate())) else: event.ignore() if __name__ == '__main__': app = qtgui.qapplication(sys.argv) window = mainwindow() window.show() sys.exit(app.exec_())
well require qsqltablemodel , , use listview rather listwidget. load model database file , connect model listview. in listview set model column want display in view, using setmodelcolumn() function.
here example of how can it.
from pyqt4 import qtcore, qtgui,qtsql import os try: _fromutf8 = qtcore.qstring.fromutf8 except attributeerror: _fromutf8 = lambda s: s config_database_path = "./" config_database_name = "comboboxexample.db" class ui_form(object): def setupui(self, form): form.setobjectname(_fromutf8("form")) form.resize(640, 480) filename = os.path.join(config_database_path,config_database_name) self.db = qsqldatabase.adddatabase("qsqlite") self.db.setdatabasename(filename) self.model = qtsql.qsqltablemodel(self, self.db) self.model.settable('items') # enter table name self.model.seteditstrategy(qtsql.qsqltablemodel.onmanualsubmit) self.splitter = qtgui.qsplitter(form) self.splitter.setgeometry(qtcore.qrect(10, 30, 621, 441)) self.splitter.setorientation(qtcore.qt.horizontal) self.splitter.setobjectname(_fromutf8("splitter")) self.listview = qtgui.qlistview(self.splitter) self.listview.setobjectname(_fromutf8("listview")) self.listview.setmodel(self.model) # enter column number want display self.listview.setmodelcolumn(1) self.textedit = qtgui.qtextedit(self.splitter) self.textedit.setobjectname(_fromutf8("textedit")) self.retranslateui(form) qtcore.qobject.connect(self.listview, qtcore.signal("clicked(qmodelindex)"),self.listclicked_2) qtcore.qmetaobject.connectslotsbyname(form) def retranslateui(self, form): form.setwindowtitle(qtgui.qapplication.translate("form", "form", none, qtgui.qapplication.unicodeutf8)) def listclicked_2( self, qmodelindex ): # take data model , display in textedit self.textedit.settext(qmodelindex.data(qtcore.qt.displayrole).tostring())
Comments
Post a Comment