python - updating either a static text or textctrl *read only* upon selection of an item in a choice box -
basically, i'm trying either static label or read textctrl change it's price accordingly item selected in choice widget. lists item_id's , respective prices share same indexes despite being on 2 different lists given simultaneous creation... thing no matter item select, price remains same either way code above has static text method... read textctrl turned out same ideas on can done?
the code of dialog in question
class additemorder ( wx.dialog ): def __init__( self, parent,entryit ): wx.dialog.__init__ ( self, parent, id = wx.id_any, title = u"add item", pos = wx.defaultposition, size = wx.size( 285,173 ), style = wx.default_dialog_style ) self.entryit = entryit self.setsizehintssz( wx.defaultsize, wx.defaultsize ) self.ite = i.item() bsizer25 = wx.boxsizer( wx.vertical ) gsizer9 = wx.gridsizer( 2, 2, 0, 0 ) self.m_statictext34 = wx.statictext( self, wx.id_any, u"item id", wx.defaultposition, wx.defaultsize, 0 ) self.m_statictext34.wrap( -1 ) gsizer9.add( self.m_statictext34, 0, wx.all|wx.align_center_horizontal|wx.align_center_vertical, 5 ) self.m_choice2choices = [] self.create_choices(self.m_choice2choices) self.item_id = wx.choice( self, wx.id_any, wx.defaultposition, wx.defaultsize, self.m_choice2choices, 0 ) self.item_id.setselection( 0 ) self.item_id.bind(evt_choice,self.get_index) gsizer9.add( self.item_id, 0, wx.all|wx.align_center_vertical|wx.align_center_horizontal, 5 ) self.m_statictext17 = wx.statictext( self, wx.id_any, u"item price", wx.defaultposition, wx.defaultsize, 0 ) self.m_statictext17.wrap( -1 ) gsizer9.add( self.m_statictext17, 0, wx.all|wx.align_center_horizontal|wx.align_center_vertical, 5 ) self.order_price = wx.statictext( self, wx.id_any, str(self.prices[self.item_id.getselection() ]), wx.defaultposition, wx.defaultsize, 0 ) self.order_price.wrap( -1 ) self.order_price.setlabel(str(self.prices[self.item_id.getselection() ])) gsizer9.add( self.order_price, 0, wx.all|wx.align_center_horizontal|wx.align_center_vertical, 5 ) self.m_statictext35 = wx.statictext( self, wx.id_any, u"item qty", wx.defaultposition, wx.defaultsize, 0 ) self.m_statictext35.wrap( -1 ) gsizer9.add( self.m_statictext35, 0, wx.all|wx.align_center_horizontal|wx.align_center_vertical, 5 ) self.item_qty = wx.textctrl( self, wx.id_any, wx.emptystring, wx.defaultposition, wx.size( 120,-1 ), 0 ) gsizer9.add( self.item_qty, 0, wx.all|wx.align_center_horizontal|wx.align_center_vertical, 5 ) bsizer25.add( gsizer9, 1, wx.expand, 5 ) self.m_button19 = wx.button( self, wx.id_any, u"ok", wx.defaultposition, wx.defaultsize, 0 ) self.m_button19.bind(wx.evt_button, self.ok) bsizer25.add( self.m_button19, 0, wx.all|wx.align_center_horizontal|wx.expand, 5 ) self.setsizer( bsizer25 ) self.layout() self.centre( wx.both ) the create choices , index functions
def create_choices(self,event): self.prices = [] entry in self.ite.entries: self.custom = entry.item_id self.custompr = entry.item_price self.prices.append(self.custompr) self.m_choice2choices.append(self.custom) return self.m_choice2choices def get_index(self,event): self.currindex = self.item_id.getselection() return self.currindex
when want change text shown statictext (presumably when evt_choice handler in case) need call statictext's setlabel method new text. so, this:
newtext = str(self.prices[self.currindex]) self.m_statictext17.setlabel(newtext)
Comments
Post a Comment