PDA

View Full Version : horizontalHeaderItem is None



Adler
14th November 2016, 18:47
Hi,

I got _AttributeError: 'NoneType' object has no attribute 'text'_ at line 35 from the code below.

In addition, I tested the index value and it seems to be correct.

Any ideas why i get a NoneType?



from PySide.QtCore import Slot
from PySide import QtGui, QtCore

class Output(object):

def __init__(self, physical_type):
''' '''
self.group_box = QtGui.QGroupBox('Output')
self.layout = QtGui.QVBoxLayout()
self.layout.addWidget(self.group_box, 1)

self.tabs = QtGui.QTabWidget()

def run(self):
self.tabs.addTab(self.__genTable(), "None")

form_layout = QtGui.QFormLayout(self.group_box)
form_layout.addWidget(self.tabs)

return self.layout

def __genTable(self, rows = 4, columns = 2):
table_view = QtGui.QTableWidget(rows,columns)

table_view.setContextMenuPolicy(QtCore.Qt.CustomCo ntextMenu)
table_view.setSelectionBehavior( QtGui.QTableView.SelectItems )

table_view.horizontalHeader().sectionDoubleClicked .connect(self.changeHorizontalHeader)

return table_view


def changeHorizontalHeader(self, index):
model = self.tabs.currentWidget()
oldHeader = model.horizontalHeaderItem(index).text()
newHeader, ok = QtGui.QInputDialog.getText(QtGui.QInputDialog(),
'Change header label for column {}'.format(index),
'Header:',
QtGui.QLineEdit.Normal,
oldHeader)
if ok:
self.tabs.currentWidget().setText(newHeader)

ChrisW67
15th November 2016, 09:53
QTableWidget::horizontalHeaderItem() returns the horizontal header item for column, column, if one has been set; otherwise returns 0. 0 is None in Python.

Nothing I see in your code has created header items by, for example, setting header text.

Adler
15th November 2016, 22:32
@ChrisW67, your advice solved my problem.

I added:

table_view.setHorizontalHeaderLabels([str(x) for x in range(1, columns + 1)])
table_view.setVerticalHeaderLabels([str(x) for x in range(1, rows + 1)])