带有整数的 wxpython Checklistbox

问题描述

我使用检查列表框作为过滤器,当列表中有整数时无法使其工作。我尝试转换为字符串,但仍然出错。关于如何让它发挥作用的任何建议?

list1 工作正常 list2 = 索引 0 处的项目类型为“int”,但需要一个字节或字符串序列 testlist1 和 testlist2:CheckListBox():参数不匹配任何重载调用: 重载 1:参数 5 具有意外类型“str” 重载 2:参数过多

import wx

class MyFrame(wx.Frame):
 
    def __init__(self):
        wx.Frame.__init__(self,None,-1,"Multi-mode testing hot patch tool",size = (800,600))
        panel = wx.Panel(self)
        list1 = ["one","two","three"]
        list2 = [1,2,3]
        testlist1 = ','.join(map(str,list2))
        testlist2 = ''.join(str(e) for e in list2)
        
        self.listBox3 = wx.CheckListBox(panel,(300,80),(200,60),list1)

 
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

解决方法

您没有正确构建列表。

看看打印出你的构造的结果,然后在下面testlist3

1,2,3
123
['1','2','3']


import wx

class MyFrame(wx.Frame):
 
    def __init__(self):
        wx.Frame.__init__(self,None,-1,"Multi-mode testing hot patch tool",size = (800,600))
        panel = wx.Panel(self)
        list1 = ["one","two","three"]
        list2 = [1,3]
        testlist1 = ','.join(map(str,list2))
        print(testlist1)
        testlist2 = ''.join(str(e) for e in list2)
        print(testlist2)
        testlist3 = [str(i) for i in list2]
        print(testlist3)
        
        self.listbox3 = wx.CheckListBox(panel,(300,80),(200,60),testlist3)

 
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

enter image description here