2012-01-26 23 views
2

timezone1リストボックスのzone_listのいずれかの選択肢をクリックすると、その文字列をtime_zones2リストボックスに挿入したいのですが、 2番目の選択肢をtimezones2リストボックスの2行目に追加したいと思います。その後、私が前にtime_zone2リストボックスに行った選択肢の1つをクリックすると、その選択肢を削除したいと思います。wxpython:1つのリストボックスから複数の文字列を他のリストボックスに挿入

これは私が何をしたいです:choice-上 listbox1をクリック>私は以下のやっていることを見てlistbox2

からその選択を削除> choice-に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() 

答えて

0

私はコードを取り、必要なものを追加しました。 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() 
+0

ありがとうございました。まさに私が探していたものです! – TLSK

関連する問題