user interface - wx python layout overlap fields -


i face small issue python cross-platform application. code came gui wx code generator, unfortunatly lost part. try move on notepad directly wx python code.

when vertical size of listctrl exceeds 170 px, overdraws "ok" button below. can't see how move down ok button , increase vertical size of list of result. i'm not @ ease wx, , i'm stuck on point.

here'm code

frame.py (with vertical size = 190)

import wx import wx.xrc  class myframe(wx.frame):     def __init__(self, parent):         wx.frame.__init__(self, parent, id=wx.id_any, title=u'window', pos=wx.defaultposition, size=wx.size(494, 439), style=wx.caption | wx.close_box | wx.system_menu)         self.setsizehintssz(wx.defaultsize, wx.defaultsize)         self.setbackgroundcolour(wx.colour(234, 237, 240))         bsizer1 = wx.boxsizer(wx.vertical)         bsizer6 = wx.boxsizer(wx.vertical)         bsizer6.addspacer((0, 30), 0, wx.expand, 5)         bsizer7 = wx.boxsizer(wx.horizontal)         bsizer7.setminsize(wx.size(240, -1))         bsizer7.addspacer((65, 0), 0, 0, 5)         self.m_bitmap2 = wx.staticbitmap(self, wx.id_any, wx.bitmap(u'icons.png', wx.bitmap_type_any), wx.defaultposition, wx.defaultsize, wx.raised_border)         self.m_bitmap2.settooltipstring(u'open')         bsizer7.add(self.m_bitmap2, 0, wx.all | wx.align_center_vertical, 5)         bsizer7.addspacer((55, 0), 1, wx.expand, 5)         self.m_statictext1 = wx.statictext(self, wx.id_any, u'search', wx.defaultposition, wx.defaultsize, 0)         self.m_statictext1.wrap(-1)         self.m_statictext1.setfont(wx.font(14, 70, 90, 90, false, wx.emptystring))         bsizer7.add(self.m_statictext1, 0, wx.all | wx.align_center_horizontal | wx.align_center_vertical, 5)         self.searchfield = wx.textctrl(self, wx.id_any, wx.emptystring, wx.defaultposition, wx.defaultsize, wx.te_process_enter)         self.searchfield.setmaxlength(0)         self.searchfield.setfont(wx.font(15, 70, 90, 90, false, wx.emptystring))         bsizer7.add(self.searchfield, 0, wx.all | wx.align_center_horizontal | wx.align_center_vertical, 5)         bsizer6.add(bsizer7, 1, 0, 5)         bsizer6.addspacer((0, 15), 0, 0, 5)         self.gosearch = wx.button(self, wx.id_any, u'list', wx.defaultposition, wx.defaultsize, 0)         self.gosearch.setfont(wx.font(wx.normal_font.getpointsize(), 70, 90, 92, false, wx.emptystring))         bsizer6.add(self.gosearch, 0, wx.align_center_horizontal | wx.top, 5)         bsizer6.addspacer((0, 10), 0, 0, 5)         bsizer1.add(bsizer6, 1, wx.expand, 5)         gsizer3 = wx.gridsizer(4, 0, 0, 0)         self.dataout = wx.listctrl(self, wx.id_any, wx.defaultposition, wx.size(480, 190), wx.lc_report | wx.lc_single_sel)         self.dataout.setfont(wx.font(10, 70, 90, 90, false, wx.emptystring))         gsizer3.add(self.dataout, 0, wx.align_center_horizontal | wx.all, 5)         gsizer3.addspacer((0, 0), 1, wx.expand, 5)         self.butok = wx.button(self, wx.id_any, u'ok', wx.defaultposition, wx.defaultsize, 0)         self.butok.setfont(wx.font(14, 70, 90, 90, false, wx.emptystring))         gsizer3.add(self.butok, 0, wx.align_center_horizontal | wx.align_bottom, 5)         self.m_statictext7 = wx.statictext(self, wx.id_any, u'help', wx.defaultposition, wx.defaultsize, 0)         self.m_statictext7.wrap(-1)         self.m_statictext7.setfont(wx.font(wx.normal_font.getpointsize(), 70, 90, 90, true, wx.emptystring))         gsizer3.add(self.m_statictext7, 0, wx.align_center_horizontal | wx.align_bottom | wx.all, 5)         bsizer1.add(gsizer3, 1, wx.expand, 5)         self.setsizer(bsizer1)         self.layout()         self.centre(wx.both) 

main.py

import sys import wx import frame  if __name__ == '__main__':     app = wx.app(true)     frame1 = frame.myframe(none)     frame1.show(true)     app.settopwindow(frame1)     app.mainloop()     sys.exit() 

enter image description here

thanks helpful answers.

i using sized controls available of 2.8.12 (i believe), provide sizers free less coding, if code hand. think code cleaner/understandable if use keywords (i changed of code, show mean), allows drop things use control defaults.

it better use meaningful variable names, e.g. instead of self.m_statictext7 use self.sthelp.

# -*- coding: utf-8 -*-  import wx import wx.lib.sized_controls sc   class myframe(sc.sizedframe):     def __init__(self, parent):         super(myframe, self).__init__(parent,                                       title=u'window',                                       style=wx.caption | wx.close_box | wx.system_menu)         self.setbackgroundcolour(wx.colour(234, 237, 240))          pane = self.getcontentspane()          panesearch = sc.sizedpanel(pane)         panesearch.setsizertype("horizontal")         panesearch.setsizerprops(align="center")         self.m_bitmap2 = wx.staticbitmap(panesearch,                                          bitmap=wx.bitmap(u'icons.png', wx.bitmap_type_any),                                          style=wx.raised_border)         self.m_bitmap2.settooltipstring(u'open')          self.stsearch = wx.statictext(panesearch,                                       label=u'search')         self.stsearch.wrap(-1)         self.stsearch.setfont(wx.font(14, 70, 90, 90, false, wx.emptystring))          self.searchfield = wx.textctrl(panesearch,                                        style=wx.te_process_enter)         self.searchfield.setmaxlength(0)         self.searchfield.setfont(wx.font(15, 70, 90, 90, false, wx.emptystring))          self.gosearch = wx.button(pane, label=u'list')         self.gosearch.setfont(wx.font(wx.normal_font.getpointsize(), 70, 90, 92, false, wx.emptystring))         self.gosearch.setsizerprops(align="center")          self.dataout = wx.listctrl(pane, size=wx.size(480, 190),                                    style=wx.lc_report | wx.lc_single_sel)         self.dataout.setfont(wx.font(10, 70, 90, 90, false, wx.emptystring))          self.butok = wx.button(pane, label=u'ok')         self.butok.setfont(wx.font(14, 70, 90, 90, false, wx.emptystring))         self.butok.setsizerprops(align="center")          self.sthelp = wx.statictext(pane, label=u'help')         self.sthelp.wrap(-1)         self.sthelp.setfont(wx.font(wx.normal_font.getpointsize(), 70, 90, 90, true, wx.emptystring))         self.sthelp.setsizerprops(align="center")          self.fit()   if __name__ == '__main__':     app = wx.app(true)     frame1 = myframe(none)     frame1.show(true)     app.settopwindow(frame1)     app.mainloop() 

Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -