Skip to main content
 首页 » 编程设计

python之wxpython:将多个字符串从一个列表框插入到另一个列表框

2025年05月04日29cmt

当我在 timezone1 列表框中单击 zone_list 的一个选项时,我想将该字符串插入 time_zones2 列表框中,如果之后我选择另一个选项,我想将第二个选项添加到第二行timezones2 列表框。然后,当我在 time_zone2 列表框中单击我之前所做的选择之一时,我想删除该选择。

这是我想做的: listbox1 单击一个选项->将该选项插入 listbox2 listbox2 单击一个选项->从 listbox2 中删除该选项

看看我在下面做了什么:

import wx 
 
from time import * 
 
class MyFrame(wx.Frame): 
    def __init__(self, parent, id, title): 
        wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition, (550, 350)) 
 
        zone_list = ['CET', 'GMT', 'MSK', 'EST', 'PST', 'EDT'] 
 
 
        panel = wx.Panel(self, -1) 
        self.time_zones = wx.ListBox(panel, -1, (10,100), (170, 130), zone_list, wx.LB_SINGLE) 
        self.time_zones.SetSelection(0) 
 
        self.time_zones2 = wx.ListBox(panel, -1, (10,200), (170, 400), '',wx.LB_SINGLE) 
 
        self.Bind(wx.EVT_LISTBOX, self.OnSelect) 
 
    def OnSelect(self, event): 
 
        index = event.GetSelection() 
        time_zone = self.time_zones.GetString(index) 
 
 
        self.time_zones2.Set(time_zone) 
 
class MyApp(wx.App): 
    def OnInit(self): 
        frame = MyFrame(None, -1, 'listbox.py') 
        frame.Centre() 
        frame.Show(True) 
        return True 
 
app = MyApp(0) 
app.MainLoop() 

请您参考如下方法:

我获取了您的代码并添加了您需要的内容。请记住,wx.ListBox.Set(items) 需要一个项目列表,因此当您向它传递单个字符串时,它会将字符串中的每个字符视为一个单独的项目。

import wx 
 
from time import * 
 
class MyFrame(wx.Frame): 
    def __init__(self, parent, id, title): 
        wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition, (550, 350)) 
        self.second_zones = [] 
        zone_list = ['CET', 'GMT', 'MSK', 'EST', 'PST', 'EDT'] 
 
 
        panel = wx.Panel(self, -1) 
        self.time_zones = wx.ListBox(panel, -1, (10,100), (170, 130), zone_list, wx.LB_SINGLE) 
        self.time_zones.SetSelection(0) 
 
        self.time_zones2 = wx.ListBox(panel, -1, (10,200), (170, 400), '',wx.LB_SINGLE) 
 
        self.Bind(wx.EVT_LISTBOX, self.OnSelectFirst, self.time_zones) 
        self.Bind(wx.EVT_LISTBOX, self.OnSelectSecond, self.time_zones2) 
 
 
    def OnSelectFirst(self, event): 
        index = event.GetSelection() 
        time_zone = str(self.time_zones.GetString(index)) 
        self.second_zones.append(time_zone) 
        self.time_zones2.Set(self.second_zones) 
 
 
    def OnSelectSecond(self, event): 
        index = event.GetSelection() 
        time_zone = str(self.time_zones2.GetString(index)) 
        self.second_zones.remove(time_zone) 
        self.time_zones2.Set(self.second_zones)         
 
 
class MyApp(wx.App): 
    def OnInit(self): 
        frame = MyFrame(None, -1, 'listbox.py') 
        frame.Centre() 
        frame.Show(True) 
        return True 
 
app = MyApp(0) 
app.MainLoop()