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()
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
Post a Comment