Добавить строку в начале в wx.ListBox - PullRequest
0 голосов
/ 01 марта 2019

Я использую wxPython 2.8 и в моем приложении я использую wx.ListBox для добавления некоторых строк при возникновении указанного события.Каждый раз, когда событие вызывается, мне нужно добавить строку в верхнюю позицию wx.ListBox (другие строки будут расположены позже).

Если у меня изначально есть wx.ListBox со следующей строкой:

World

и следующее событие сохраняет в списке строку «Hello»;результат должен быть:

Hello
World

Возможно ли это?Я не нашел простой способ сделать это.

спасибо

1 Ответ

0 голосов
/ 02 марта 2019

Просто используйте 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()

enter image description here

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