diff -urN v3/wx_smp4.py v4/wx_smp4.py --- v3/wx_smp4.py 1970-01-01 09:00:00.000000000 +0900 +++ v4/wx_smp4.py 2020-05-31 20:52:44.000000000 +0900 @@ -0,0 +1,58 @@ +#!/usr/bin/env python + +import wx + +import empty +import wx_ut +import base +import dbg + +def get_name(inf): + return inf.wxo.o_names.get( inf.o, '?' ) + +def btn_hdl(inf): + tc = inf.wxo.L.tc + tc.SetValue( inf.label ) + +def tbtn_hdl(inf): + tc = inf.wxo.L.tc + tc.SetValue( '{}={} label={}'.format( get_name( inf ), inf.v, inf.label ) ) + +def menu_hdl(inf): + tc = inf.wxo.L.tc + tc.SetValue( '{} {} {} Hz'.format( inf.menu.i, inf.menu.lbl, inf.menu.v ) ) + +def init(wxo): + tc = wxo.wx_new( wx.TextCtrl, '', min_h=80 ) + + (btn_ok, btn_cancel, btn_go) = wxo.button_new( [ 'OK', 'Cancel', 'Go' ], btn_hdl ) + + def ckb_hdl(inf): + btn_go.Enable( inf.v ) + + ckb = wxo.checkbox_new( 'enable', ckb_hdl, init_stat=True ) + + tbtn_1 = wxo.toggle_new( 'ON', tbtn_hdl ) + + tbtn_2 = wxo.toggle_new( [ 'ON', 'OFF' ], tbtn_hdl ) + + menu = wxo.menu_new( [ 'MBS', 'ABC', 'OBC' ], menu_hdl, 'ABC', [ 1179, 1008, 1314 ] ) + + wp = wxo.wp + wp_exp = wxo.wp_exp + lsts = [ + wp_exp( [ wp_exp( tc, prop=1 ) ], prop=1 ), + wp_exp( [ tbtn_1, wp( tbtn_2, prop=1 ), 'radio', menu ] ), + wp_exp( [ btn_ok, btn_cancel, ckb, wp( btn_go, prop=1 ) ] ), + ] + wxo.wrap_frame( lsts ) + wxo.L = empty.new( locals() ) + wxo.o_names = base.rev_dic( locals() ) + +def run(): + wxo = wx_ut.new( 'wx sample 4', init ) + wxo.main_loop() + +if __name__ == "__main__": + run() +# EOF diff -urN v3/wx_ut.py v4/wx_ut.py --- v3/wx_ut.py 2020-05-30 19:58:22.000000000 +0900 +++ v4/wx_ut.py 2020-05-31 20:04:25.000000000 +0900 @@ -107,6 +107,13 @@ def new(title, init, fini=None): e = empty.new( app=None, frame=None ) + newed_objs = {} + + def newed_obj_set(k, o): + newed_objs[ k ] = o + return o + + def wp(o, **kwds): dv = empty.new( border=4, prop=0, flag=0 ) for (k, v) in vars( dv ).items(): @@ -115,19 +122,32 @@ kwds[ 'o' ] = o return empty.new( kwds ) + def wp_exp(o, **kwds): + kwds[ 'flag' ] = kwds.get( 'flag', 0 ) | wx.EXPAND + return wp( o, **kwds ) + + def to_wp(o): + if empty.is_empty( o ): + return o + if type( o ) == str: + o = newed_obj_set( o, label_new( o ) ) + return wp( o ) + def wrap(win, lsts): vsz = wx.BoxSizer( wx.VERTICAL ) - for wp_v in lsts: + for o_v in lsts: hsz = wx.BoxSizer( wx.HORIZONTAL ) + wp_v = to_wp( o_v ) lst = wp_v.o - for wp_h in lst: + for o_h in lst: + wp_h = to_wp( o_h ) wp_h.flag |= wx.LEFT | wx.ALIGN_CENTER_VERTICAL - if wp_h == lst[ -1 ]: + if o_h == lst[ -1 ]: wp_h.flag |= wx.RIGHT hsz.Add( wp_h.o, wp_h.prop, wp_h.flag, wp_h.border ) wp_v.flag |= wx.TOP - if wp_v == lsts[ -1 ]: + if o_v == lsts[ -1 ]: wp_v.flag |= wx.BOTTOM vsz.Add( hsz, wp_v.prop, wp_v.flag, wp_v.border )