使用wxListbox设置当前所选项目的字符串

发布于 2025-01-05 10:19:24 字数 78 浏览 1 评论 0原文

我有一个列表框,

如何将列表框当前所选项目的字符串更改为另一个字符串?

我真的无法在谷歌上找到如何做到这一点。

I have a listbox,

How can I change the string of current selected item of the listbox to another string?

I cant really find how to do this on Google.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

柏拉图鍀咏恒 2025-01-12 10:19:24

只需删除选定的字符串并插入一个新字符串,就像本示例中针对单选列表框所做的那样:

import wx

class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
        wx.Frame.__init__(self, *args, style=wx.DEFAULT_FRAME_STYLE)
        self.button = wx.Button(self, -1, "Change")
        self.Bind(wx.EVT_BUTTON, self.ButtonPress, self.button)

        self.tc = wx.TextCtrl(self, -1)
        self.lb = wx.ListBox(self, -1, choices = ('One', 'Two'))

        box = wx.BoxSizer(wx.VERTICAL)
        box.Add(self.lb, 0, wx.EXPAND, 0)
        box.Add(self.tc, 0, wx.EXPAND, 0)
        box.Add(self.button, 0, wx.ADJUST_MINSIZE, 0)
        self.SetSizer(box)
        box.Fit(self)
        self.Layout()

    def ButtonPress(self, evt):
        txt = self.tc.GetValue()
        pos = self.lb.GetSelection()
        self.lb.Delete(pos)
        self.lb.Insert(txt, pos)

if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    frame = MyFrame(None, -1, "")
    frame.Show()
    app.MainLoop()

如果您需要多选列表框,那么您应该使用 style=wx.LB_MULTIPLE 创建它:

        self.lb = wx.ListBox(self, -1, choices = ('One', 'Two'), style=wx.LB_MULTIPLE)

现在您可以一次更改多个字符串:

    def ButtonPress(self, evt):
        txt = self.tc.GetValue()
        for pos in self.lb.GetSelections():
            self.lb.Delete(pos)
            self.lb.Insert(txt, pos)

Just delete selected string and insert a new one, like it is done in this example for a single-choice listbox:

import wx

class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
        wx.Frame.__init__(self, *args, style=wx.DEFAULT_FRAME_STYLE)
        self.button = wx.Button(self, -1, "Change")
        self.Bind(wx.EVT_BUTTON, self.ButtonPress, self.button)

        self.tc = wx.TextCtrl(self, -1)
        self.lb = wx.ListBox(self, -1, choices = ('One', 'Two'))

        box = wx.BoxSizer(wx.VERTICAL)
        box.Add(self.lb, 0, wx.EXPAND, 0)
        box.Add(self.tc, 0, wx.EXPAND, 0)
        box.Add(self.button, 0, wx.ADJUST_MINSIZE, 0)
        self.SetSizer(box)
        box.Fit(self)
        self.Layout()

    def ButtonPress(self, evt):
        txt = self.tc.GetValue()
        pos = self.lb.GetSelection()
        self.lb.Delete(pos)
        self.lb.Insert(txt, pos)

if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    frame = MyFrame(None, -1, "")
    frame.Show()
    app.MainLoop()

If you need multiple-selection listbox, then you should create it with style=wx.LB_MULTIPLE:

        self.lb = wx.ListBox(self, -1, choices = ('One', 'Two'), style=wx.LB_MULTIPLE)

Now you're able to change multiple strings at once:

    def ButtonPress(self, evt):
        txt = self.tc.GetValue()
        for pos in self.lb.GetSelections():
            self.lb.Delete(pos)
            self.lb.Insert(txt, pos)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文