【发布时间】:2015-07-14 01:04:28
【问题描述】:
我在使用 python 跨平台应用程序时遇到了一个小问题。最初代码来自 GUI wx 代码生成器,不幸的是我丢失了这部分。所以我尝试直接使用 wx python 代码继续使用记事本。
当 ListCtrl 的垂直大小超过 170 px 时,这会覆盖下面的“确定”按钮。我看不到如何向下移动 OK 按钮并增加结果列表的垂直大小。我对 wx 不放心,我真的卡在了这一点上。
这是我的代码
frame.py(垂直大小 = 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()
感谢您提供有用的答案。
【问题讨论】:
标签: python user-interface wxpython wxwidgets