【问题标题】:Add string at beginning in wx.ListBox在 wx.ListBox 开头添加字符串
【发布时间】:2019-03-01 17:34:14
【问题描述】:

我正在使用 wxPython 2.8,在我的应用程序中,我使用 wx.ListBox 在触发指定事件时添加一些字符串。每次触发事件时,我都需要在 wx.ListBox 的顶部添加一个字符串(其他字符串将在之后定位)。

如果我最初有带有以下字符串的 wx.ListBox:

World

并且下一个事件将字符串“Hello”存储在列表框中;结果必须是:

Hello
World

有可能吗?我还没有找到任何直接的方法来做到这一点。

谢谢

【问题讨论】:

    标签: python wxpython


    【解决方案1】:

    只需使用InsertItems(list,pos),其中pos 为0 - 添加的项目将插入到声明的任何位置。即

    import wx
    
    class MainPanel(wx.Panel):
        def __init__(self, parent):
            wx.Panel.__init__(self, parent)
            initial_items = ['A reasonably long item that should cause a scrollbar to appear xxxxxx', 'another line', 'and another']
            self.listbox = wx.ListBox(self, style=wx.LB_HSCROLL)
            self.listbox.InsertItems(initial_items, 0)
            self.AddBtn = wx.Button(self, -1, "Add Item")
            self.AddBtn.Bind(wx.EVT_BUTTON, self.OnAdd)
            sizer = wx.BoxSizer(wx.VERTICAL)
            sizer.Add(self.listbox, 1, wx.EXPAND)
            sizer.Add(self.AddBtn, 0, wx.EXPAND)
            self.SetSizer(sizer)
    
        def OnAdd(self,evt):
            self.listbox.InsertItems(['Hello World'], 0) #add at position zero
    
    class MainWindow(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self, None, -1, "ListBox", size=(400, 400))
    
            main_sizer = wx.BoxSizer(wx.VERTICAL)
            main_sizer.Add(MainPanel(self), 1, wx.EXPAND)
            self.SetSizer(main_sizer)
    
            self.Layout()
            self.Center()
            self.Show(True)
    
    
    app = wx.App()
    mw = MainWindow()
    app.MainLoop()
    

    【讨论】:

      猜你喜欢
      • 2013-08-06
      • 2019-01-10
      • 1970-01-01
      • 1970-01-01
      • 2019-09-19
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多