Robinson Clemente
Robinson Clemente

Reputation: 3

Error when im trying add a column to a ListCtrl in wxPython(4.0.6)

Im trying to add a column to a LisCtrl but i cannot

I tried to follow the documentation but i dont know what am i doing wrong

The documentation says : InsertColumn (self, col, heading, format=LIST_FORMAT_LEFT, width=LIST_AUTOSIZE)

(https://docs.wxpython.org/wx.ListCtrl.html#wx.ListCtrl.InsertColumn)

import wx

class View1(wx.Frame): def init(self,*args,**kw): super(View1, self).init(*args,**kw)

panel = wx.Panel(self, pos=(0,0), size=(800,700)) #TITULO titulo = wx.StaticText(panel,label="AGENDA DE CONTACTOS",pos=(130,1)) #Creamos Sizer y le agregamos el titulo sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(titulo,0,wx.ALIGN_CENTER,0) panel.SetSizer(sizer) #Texto1 X,Y label1 = wx.StaticText(panel,label="Nombre",pos=(70,50)) field1 = wx.TextCtrl(panel,pos=(200,50), size=(150,20)) #Texto2 X,Y label2 = wx.StaticText(panel,label="Apellido Paterno",pos=(70,90)) field2 = wx.TextCtrl(panel,pos=(200,90), size=(150,20)) #Texto3 X,Y label3 = wx.StaticText(panel,label="Apellido Materno",pos=(70,130)) field3 = wx.TextCtrl(panel,pos=(200,130), size=(150,20)) #Texto4 X,Y label4 = wx.StaticText(panel,label="Teléfono ",pos=(70,170)) field4 = wx.TextCtrl(panel,pos=(200,170), size=(150,20)) #Texto5 X,Y label5 = wx.StaticText(panel,label="Correo",pos=(70,210)) field5 = wx.TextCtrl(panel,pos=(200,210), size=(150,20)) #Texto6 X,Y label6 = wx.StaticText(panel,label="Teléfono",pos=(450,50)) field6 = wx.TextCtrl(panel,pos=(550,50), size=(150,21)) #Boton Agregar botonAgregar = wx.Button(panel,label="Agregar",pos=(215,245),size=(120,22)) #Boton eliminar botonEliminar = wx.Button(panel,label="Eliminar",pos=(565,90),size=(120,22)) #Creamos el ListCtrl para desplegar la información tabla = wx.ListCtrl(panel,pos=(25,350),size=(750,250), style=wx.LC_LIST) tabla.InsertColumn (self,0, 'NOMBRE', format=wx.LIST_FORMAT_LEFT, width=wx.LIST_AUTOSIZE)

The result in terminal is : TypeError: ListCtrl.InsertColumn(): arguments did not match any overloaded call: overload 1: argument 1 has unexpected type 'View1' overload 2: argument 1 has unexpected type 'View1'

i tried remove the self parameter leaving as tabla.InsertColumn (0, 'NOMBRE', format=wx.LIST_FORMAT_LEFT, width=wx.LIST_AUTOSIZE) , but appears other error : wx._core.wxAssertionError: C++ assertion "InReportView()" failed at /home/vagrant/wxPython-4.0.6/ext/wxWidgets/src/generic/listctrl.cpp(5196) in DoInsertColumn(): can't add column in non report mode

Upvotes: 0

Views: 624

Answers (1)

user2682863
user2682863

Reputation: 3217

As Attila Toth said, remove the self parameter. Self is automatically passed to methods in python. In this case self is the wx.ListCtrl instance, but then you pass the View1 instance as the column number parameter. If you're still confused about the self parameter here is a pretty good explanation of it

updated to address new question

The second error is pretty self-explanatory. Create the ListCtrl with the style flag wx.LC_REPORT instead of wx.LC_LIST

Upvotes: 0

Related Questions