On Mar 1, 2009, at 2:01 PM, Ricardo Aráoz wrote:
> Hi, need some help. This is my first hand coded form, I need it to be
> hand coded because the form's menu will be data driven.
> So I just wanted a blue form with a menu, this is what I've come up so
> far (obviously does not do what I want).
> Any kind soul wishes to point out what I'm doing wrong? TIA
>> def doOpen():
>> dabo.ui.info('Función Open ejecutada', title='Atención!')
>>
>> def doClose():
>> dabo.ui.info('Función Close ejecutada', title='Atención!')
>>
>> def doEdit():
>> dabo.ui.info('Función Edit ejecutada', title='Atención!')
All of these are event handlers, and thus will be called with an
event object passed to them. Change them all to add 'evt' as a
parameter; e.g.: def doOpen(evt):
>> def main():
>> app = dabo.dApp()
>> app.setup()
>> # instantiate the form
>> form = dabo.ui.dForm(app.MainForm, Caption="Hello, Dabo
>> users!")
At this point the form's menu bar has already been created. Since you
aren't creating a form class, but rather an instance, you have to tell
it what menu bar class to create, or you'll get the default menu bar.
If you want a plain menu, then change this to:
form = dabo.ui.dForm(app.MainForm, Caption="Hello, Dabo users!",
MenuBarClass=dabo.ui.dMenuBar)
>> mb = dabo.ui.dMenuBar()
Since the menu bar you want already exists, just reference that: mb =
form.MenuBar
>> mfile = dabo.ui.dMenu()
>> mfile.Caption = '&File'
>> mfile.append('Open', HotKey='Ctrl+D', OnHit=doOpen,
>> help='Abrir un archivo')
>> mfile.append('Close', HotKey='Ctrl+L', OnHit=doClose,
>> help='Cerrar un archivo')
>> mfile.appendSeparator()
>> mfile.append('Edit', HotKey='Ctrl+E', OnHit=doEdit,
>> help='Editar algo')
>>
You never append the menu to the menu bar. You need to call
mb.append(mfile)
>> panel = dabo.ui.dPanel(form)
>> panel.BackColor = 'blue'
>> panel.Sizer = dabo.ui.dSizer("v")
You haven't added the panel to the form's sizer. You need to call:
form.Sizer.append(panel, 1, "x")
...if you want it to fill the form. The '1' is the proportion, and 'x'
means 'expand'. Since this is a common call, I added a shortcut:
form.Sizer.append1x(panel)
>> #form.addObject(dabo.ui.dPanel, "tbox")
>> #form.tbox.Value = "Cool stuff!"
>> #form.tbox.FontBold = True
>> # show the form
>> app.SetMenuBar(mb)
Application objects do not have menu bars; forms do. Just add:
form.MenuBar = mb
>> form.Show()
You're calling the wxPython version of the method, not the Dabo
wrapped version. Case matters, and the Dabo version is lower case:
form.show().
>> app.start()
Try it with the changes I suggested. If the explanations aren't
clear, let me know.
-- Ed Leafe
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-users
Searchable Archives: http://leafe.com/archives/search/dabo-users
This message:
http://leafe.com/archives/byMID/[email protected]