Ошибка при попытке добавить столбец в ListCtrl в wxPython (4.0.6) - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь добавить столбец в LisCtrl, но я не могу

Я пытался следовать документации, но я не знаю, что я делаю не так

Документация гласит: InsertColumn (self,столбец, заголовок, формат = LIST_FORMAT_LEFT, ширина = LIST_AUTOSIZE)

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

import wx</p>

<p>class View1(wx.Frame):
    def <strong>init</strong>(self,*args,**kw):
        super(View1, self).<strong>init</strong>(*args,**kw)</p>

<code>    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)
</code>

Результат в терминале: TypeError: ListCtrl.InsertColumn (): аргументыне соответствует ни одному перегруженному вызову: перегрузка 1: аргумент 1 имеет неожиданный тип 'View1', перегрузка 2: аргумент 1 имеет неожиданный тип 'View1'

Я попытался удалить параметр self, оставив значение tabla.InsertColumn (0, 'NOMBRE).', format = wx.LIST_FORMAT_LEFT, width = wx.LIST_AUTOSIZE), но появляется другая ошибка: wx._core.wxAssertionError: Сбой утверждения C ++ «InReportView ()» в /home/vagrant/wxPython-4.0.6/ext/wxWidgets/src / generic / listctrl.cpp (5196) в DoInsertColumn (): невозможно добавить столбец в режиме без отчета

1 Ответ

0 голосов
/ 26 мая 2019

Как сказал Аттила Тот, удалите параметр self.Self автоматически передается методам в python.В этом случае self является экземпляром wx.ListCtrl, но затем вы передаете экземпляр View1 в качестве параметра номера столбца.Если вы все еще не уверены в параметре self , вот довольно хорошее объяснение этого

, обновленного для решения нового вопроса

Вторая ошибка довольно самостоятельная.пояснительная.Создайте ListCtrl с флагом стиля wx.LC_REPORT вместо wx.LC_LIST

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...