Hi Alejandro, you just need one sizer on your panel. Add one spacer (sizer.add_stretch_spacer) before and one after your text. Like so: sizer = BoxSizer.new HORIZONTAL sizer.add_stretch_spacer sizer.add StaticText.new(self, -1, ''asdf''), 0, 1 sizer.add_stretch_spacer hth, Christian. Alejandro Michelin salomon wrote:> Hi > > > > I have frame. > > Inside i want to put a static text as title, centered. > > I use two sizers, one vertical an other horizontal. > > > > But title is not centered, is put to left. > > > > My code is : > > > > require ''wx''; > > > > class TarefasNova < Wx::Panel > > def initialize(parent) > > rect = parent.get_client_rect(); > > > > super( parent, 1011, Wx::Point.new( 0, 0 ), rect.get_size(), > SIMPLE_BORDER, "NovaTarefa" ); > > > > sizer = Wx::BoxSizer.new(Wx::VERTICAL ); > > box = Wx::BoxSizer.new(Wx::HORIZONTAL); > > > > label = Wx::StaticText.new( self, :label => "CADASTRO DE TAREFAS > (NOVA)", :size => [250,-1] ); > > > > box.add( label, 1, Wx::ALIGN_CENTER_VERTICAL, 5); > > > > sizer.add_item(box, 0, Wx::ALIGN_CENTER|Wx::ALL, 5); > > end > > end > > > > How to make my title centered in the panel? > > > > Alejandro Michelin Salomon > > > > _____ > > avast! Antivirus <http://www.avast.com> : Outbound message clean. > > > Virus Database (VPS): 090319-0, 19/03/2009 > Tested on: 19/03/2009 17:32:59 > avast! - copyright (c) 1988-2009 ALWIL Software.-- Posted via http://www.ruby-forum.com/.
(gmail) Alejandro Michelin Salomon
2009-Mar-20 12:05 UTC
[wxruby-users] RES: Problem centering a label
Christian : I say in the other mail ?I have a frame?, brong i have a panel. The panel is inside the main frame. I change my code to : class TarefasNova < Wx::Panel def initialize(parent) rect = parent.get_client_rect(); super( parent, 1011, Wx::Point.new( 0, 0 ), rect.get_size(), SIMPLE_BORDER, "NovaTarefa" ); #sizer = Wx::BoxSizer.new(Wx::VERTICAL) box = Wx::BoxSizer.new(Wx::HORIZONTAL); box.add_stretch_spacer(); box.add Wx::StaticText.new(self, -1, ''asdf''), 0, 1 #label = Wx::StaticText.new( self, :label => "CADASTRO DE TAREFAS (NOVA)", :size => [250,-1] ); #box.add( label, 1, Wx::ALIGN_CENTER, 5); box.add_stretch_spacer(); #sizer.add_item(box, 0, Wx::ALIGN_CENTER|Wx::ALL, 5); end end But the text is not centered, the text is in the left. Exist some diferences between frame and panel to user sizer? De: wxruby-users-bounces at rubyforge.org [mailto:wxruby-users-bounces at rubyforge.org] Em nome de Christian Schmidt Enviada em: quinta-feira, 19 de mar?o de 2009 19:49 Para: wxruby-users at rubyforge.org Assunto: Re: [wxruby-users] Problem centering a label Hi Alejandro, you just need one sizer on your panel. Add one spacer (sizer.add_stretch_spacer) before and one after your text. Like so: sizer = BoxSizer.new HORIZONTAL sizer.add_stretch_spacer sizer.add StaticText.new(self, -1, ''asdf''), 0, 1 sizer.add_stretch_spacer hth, Christian. Alejandro Michelin salomon wrote:> Hi > > > > I have frame. > > Inside i want to put a static text as title, centered. > > I use two sizers, one vertical an other horizontal. > > > > But title is not centered, is put to left. > > > > My code is : > > > > require ''wx''; > > > > class TarefasNova < Wx::Panel > > def initialize(parent) > > rect = parent.get_client_rect(); > > > > super( parent, 1011, Wx::Point.new( 0, 0 ), rect.get_size(), > SIMPLE_BORDER, "NovaTarefa" ); > > > > sizer = Wx::BoxSizer.new(Wx::VERTICAL ); > > box = Wx::BoxSizer.new(Wx::HORIZONTAL); > > > > label = Wx::StaticText.new( self, :label => "CADASTRO DE TAREFAS > (NOVA)", :size => [250,-1] ); > > > > box.add( label, 1, Wx::ALIGN_CENTER_VERTICAL, 5); > > > > sizer.add_item(box, 0, Wx::ALIGN_CENTER|Wx::ALL, 5); > > end > > end > > > > How to make my title centered in the panel? > > > > Alejandro Michelin Salomon > > > > _____ > > avast! Antivirus <http://www.avast.com> : Outbound message clean. > > > Virus Database (VPS): 090319-0, 19/03/2009 > Tested on: 19/03/2009 17:32:59 > avast! - copyright (c) 1988-2009 ALWIL Software.-- Posted via http://www.ruby-forum.com/. _______________________________________________ wxruby-users mailing list wxruby-users at rubyforge.org http://rubyforge.org/mailman/listinfo/wxruby-users _____ avast! Antivirus <http://www.avast.com> : Inbound message clean. Virus Database (VPS): 090319-0, 19/03/2009 Tested on: 20/03/2009 07:35:25 avast! - copyright (c) 1988-2009 ALWIL Software. _____ avast! Antivirus <http://www.avast.com> : Outbound message clean. Virus Database (VPS): 090319-0, 19/03/2009 Tested on: 20/03/2009 09:05:48 avast! - copyright (c) 1988-2009 ALWIL Software. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/wxruby-users/attachments/20090320/21b2d3a5/attachment-0001.html>
Hi Alejandro, I''m not sure to understand why you need 2 sizers but your main problem is that you haven''t told the panel to use the sizer ! Here is a sample code where there are 3 texts : - at the top, the text is centered - at the middle, the text is left aligned - at the bottom, the text is right aligned The important line is the one with self.sizer = box. You should also use wx constants to make your code clearer. #!/usr/bin/env ruby # wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team # Freely reusable code: see SAMPLES-LICENSE.TXT for details begin require ''rubygems'' rescue LoadError end require ''wx'' class MyPanel < Wx::Panel def initialize(parent) super(parent) box = Wx::BoxSizer.new (Wx::VERTICAL) box.add_item(Wx::StaticText.new(self, :label => "Centered Title"), :flag => Wx::ALIGN_CENTER) box.add_item(Wx::StaticText.new(self, :label => "Leftside Text"), :flag => Wx::ALIGN_LEFT) box.add_item(Wx::StaticText.new(self, :label => "Rightside Text"), :flag => Wx::ALIGN_RIGHT) self.sizer = box end end # This is the minimum code to start a WxRuby app - create a Frame, and # show it. Wx::App.run do frame = Wx::Frame.new(nil, :title => "Minimal wxRuby App") panel = MyPanel.new(frame) frame.show end Cheers. Chauk-Mean.
Hi Alejandro, this one actually works: class TarefasNova < Wx::Panel def initialize(parent) super( parent, 1011, {:style => SIMPLE_BORDER, :name =>"NovaTarefa"} ); box = Wx::BoxSizer.new(Wx::HORIZONTAL); box.add_stretch_spacer(); box.add Wx::StaticText.new(self, -1, ''asdf''), 0, 1 box.add_stretch_spacer(); set_sizer box end end Watch for the parents'' constructor - you needn''t set size and position. Also never forget to call Panel#set_sizer or your sizer won''t have any effect. hth, Christian. -- Posted via http://www.ruby-forum.com/.
Hi Christian Schmidt wrote:> super( parent, 1011, {:style => SIMPLE_BORDER, :name > =>"NovaTarefa"} ); > > box = Wx::BoxSizer.new(Wx::HORIZONTAL); > box.add_stretch_spacer(); > box.add Wx::StaticText.new(self, -1, ''asdf''), 0, 1 > box.add_stretch_spacer(); > >Simpler, using StaticText ALIGN styles instead of extra spacers box = Wx::VBoxSizer.new st = Wx::StaticText.new(self, :label => ''adsf'', :style => Wx::ALIGN_CENTRE) box.add st, 0, Wx::GROW> Watch for the parents'' constructor - you needn''t set size and position. >This is a good point - use sizers to have children adjust to their parent''s size. Also, if a window is the only child of a frame parent (often the case with Panels inside Frames) then it will automatically take up all the avaiable space - no sizer needed. a
(gmail) Alejandro Michelin Salomon
2009-Mar-20 16:56 UTC
[wxruby-users] RES: RES: Problem centering a label
Chauk-Mean. : Your code runs ok in a separate file. If i call MyPanel from my menu to put the panel in my main frame, the code does not work. This code : begin require ''rubygems'' rescue LoadError end require ''wx''; class TarefasNova < Wx::Panel def initialize(parent) super(parent) box = Wx::BoxSizer.new (Wx::VERTICAL) box.add_item(Wx::StaticText.new(self, :label => "Centered Title"), :flag => Wx::ALIGN_CENTER) box.add_item(Wx::StaticText.new(self, :label => "Leftside Text"), :flag => Wx::ALIGN_LEFT) box.add_item(Wx::StaticText.new(self, :label => "Rightside Text"), :flag => Wx::ALIGN_RIGHT) self.sizer = box end end The panel only shows ?Righ?. Does not size to fill frame. When i put : rect = parent.get_client_rect(); super( parent, 1011, Wx::Point.new( 0, 0 ), rect.get_size(), SIMPLE_BORDER, "NovaTarefa" ); This makes the panel fill frame. The frame has menu bar and statusbar. De: wxruby-users-bounces at rubyforge.org [mailto:wxruby-users-bounces at rubyforge.org] Em nome de Chauk-Mean Proum Enviada em: sexta-feira, 20 de mar?o de 2009 10:39 Para: General discussion of wxRuby Assunto: Re: [wxruby-users] RES: Problem centering a label Hi Alejandro, I''m not sure to understand why you need 2 sizers but your main problem is that you haven''t told the panel to use the sizer ! Here is a sample code where there are 3 texts : - at the top, the text is centered - at the middle, the text is left aligned - at the bottom, the text is right aligned The important line is the one with self.sizer = box. You should also use wx constants to make your code clearer. #!/usr/bin/env ruby # wxRuby2 Sample Code. Copyright (c) 2004-2008 wxRuby development team # Freely reusable code: see SAMPLES-LICENSE.TXT for details begin require ''rubygems'' rescue LoadError end require ''wx'' class MyPanel < Wx::Panel def initialize(parent) super(parent) box = Wx::BoxSizer.new (Wx::VERTICAL) box.add_item(Wx::StaticText.new(self, :label => "Centered Title"), :flag => Wx::ALIGN_CENTER) box.add_item(Wx::StaticText.new(self, :label => "Leftside Text"), :flag => Wx::ALIGN_LEFT) box.add_item(Wx::StaticText.new(self, :label => "Rightside Text"), :flag => Wx::ALIGN_RIGHT) self.sizer = box end end # This is the minimum code to start a WxRuby app - create a Frame, and # show it. Wx::App.run do frame = Wx::Frame.new(nil, :title => "Minimal wxRuby App") panel = MyPanel.new(frame) frame.show end Cheers. Chauk-Mean. _______________________________________________ wxruby-users mailing list wxruby-users at rubyforge.org http://rubyforge.org/mailman/listinfo/wxruby-users _____ avast! Antivirus <http://www.avast.com> : Inbound message clean. Virus Database (VPS): 090319-0, 19/03/2009 Tested on: 20/03/2009 13:13:39 avast! - copyright (c) 1988-2009 ALWIL Software. _____ avast! Antivirus <http://www.avast.com> : Outbound message clean. Virus Database (VPS): 090319-0, 19/03/2009 Tested on: 20/03/2009 13:56:02 avast! - copyright (c) 1988-2009 ALWIL Software. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/wxruby-users/attachments/20090320/ec1170b3/attachment.html>
(gmail) Alejandro Michelin Salomon
2009-Mar-25 14:01 UTC
[wxruby-users] RES: Problem centering a label SOLVED!!!!
Hi : The problem is that, after call to create the child panel, i need to call send_size_event(). I find the solution becouse i minize the aplication to see the code in the editor and when i maxsimize the aplicattion the panel is ok filling all the frame space. Alejandro _____ avast! Antivirus <http://www.avast.com> : Outbound message clean. Virus Database (VPS): 090324-0, 24/03/2009 Tested on: 25/03/2009 11:01:09 avast! - copyright (c) 1988-2009 ALWIL Software. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/wxruby-users/attachments/20090325/90ecdf2a/attachment.html>