Reputation: 3
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 wxclass 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
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
The second error is pretty self-explanatory. Create the ListCtrl
with the style flag wx.LC_REPORT
instead of wx.LC_LIST
Upvotes: 0