python - Unable to populate QTableWidget -


i'm trying populate qtablewidget (set number of rows , columns, add column names , add data cells), widget appears empty , no errors thrown.

here working example, see class tableform():

from pyqt4 import qtcore, qtgui   try:     _fromutf8 = qtcore.qstring.fromutf8 except attributeerror:     def _fromutf8(s):         return s  try:     _encoding = qtgui.qapplication.unicodeutf8     def _translate(context, text, disambig):         return qtgui.qapplication.translate(context, text, disambig, _encoding) except attributeerror:     def _translate(context, text, disambig):         return qtgui.qapplication.translate(context, text, disambig)  class ui_tableform(object):     def setupui(self, tableform):         tableform.setobjectname(_fromutf8("tableform"))         tableform.resize(495, 506)         tableform.setlocale(qtcore.qlocale(qtcore.qlocale.russian, qtcore.qlocale.russianfederation))         self.verticallayout = qtgui.qvboxlayout(tableform)         self.verticallayout.setobjectname(_fromutf8("verticallayout"))         self.table_widget = qtgui.qtablewidget(tableform)         self.table_widget.setrowcount(0)         self.table_widget.setcolumncount(0)         self.table_widget.setobjectname(_fromutf8("table_widget"))         self.verticallayout.addwidget(self.table_widget)         self.horizontallayout = qtgui.qhboxlayout()         self.horizontallayout.setobjectname(_fromutf8("horizontallayout"))         self.start_edit_button = qtgui.qpushbutton(tableform)         self.start_edit_button.setobjectname(_fromutf8("start_edit_button"))         self.horizontallayout.addwidget(self.start_edit_button)         self.save_edits_buttonbox = qtgui.qdialogbuttonbox(tableform)         self.save_edits_buttonbox.setenabled(false)         self.save_edits_buttonbox.setstandardbuttons(qtgui.qdialogbuttonbox.cancel|qtgui.qdialogbuttonbox.save)         self.save_edits_buttonbox.setobjectname(_fromutf8("save_edits_buttonbox"))         self.horizontallayout.addwidget(self.save_edits_buttonbox)         self.verticallayout.addlayout(self.horizontallayout)          self.retranslateui(tableform)         qtcore.qmetaobject.connectslotsbyname(tableform)      def retranslateui(self, tableform):         tableform.setwindowtitle(_translate("tableform", "Таблица", none))         self.start_edit_button.settext(_translate("tableform", "Редактировать", none))     class tableform(qtgui.qdialog, ui_tableform):     def __init__(self):     super(tableform, self).__init__()     self.ui = ui_tableform()     self.ui.setupui(self)     data = [['name1', 'name2'], {'name1':[1], 'name2':[2]}, 2]     col_names = data[0]     col_data = data[1]     rows = data[2] + 1     cols = len(col_names)     self.ui.table_widget.setrowcount(rows)     self.ui.table_widget.setcolumncount(cols)     self.ui.table_widget.sethorizontalheaderlabels(col_names)     n = 0     key in col_names:       m = 0       item in col_data[key]:         newitem = qtgui.qtablewidgetitem(item)         self.ui.table_widget.setitem(m, n, newitem)         m += 1       n += 1   if __name__ == "__main__":     import sys     app = qtgui.qapplication(sys.argv)     dialog = qtgui.qdialog()     u = tableform()     u.setupui(dialog)     dialog.show()     sys.exit(app.exec_()) 

what wrong?

you're mixing several different ways of adding ui dialog. table population overwritten second call setupui, resets rows , columns zero.

i have fixed in code below, , corrected other issues (see comments):

# no need inherit ui_tableform class tableform(qtgui.qdialog):   def __init__(self):     super(tableform, self).__init__()     self.ui = ui_tableform()     self.ui.setupui(self)     data = [['name1', 'name2'], {'name1':[1], 'name2':[2]}, 2]     col_names = data[0]     col_data = data[1]     rows = data[2] + 1     cols = len(col_names)     self.ui.table_widget.setrowcount(rows)     self.ui.table_widget.setcolumncount(cols)     self.ui.table_widget.sethorizontalheaderlabels(col_names)     # use enumerate     n, key in enumerate(col_names):       m, item in enumerate(col_data[key]):         # item content must strings         newitem = qtgui.qtablewidgetitem(str(item))         self.ui.table_widget.setitem(m, n, newitem)  if __name__ == "__main__":     import sys     app = qtgui.qapplication(sys.argv)     # ui setup done in __init__     dialog = tableform()     dialog.show()     sys.exit(app.exec_()) 

Comments

Popular posts from this blog

javascript - Bootstrap Popover: iOS Safari strange behaviour -

Magento/PHP - Get phones on all members in a customer group -

session - Logging Out Using PHP -