使wx.Panel在wx.Frame中具有特定的宽度和高度(wxPython - wxWidgets)

时间:2016-09-10 13:08:14

标签: python-2.7 wxpython wxwidgets

我想在wx.Frame中获得给定大小的wx.Panel。

我已经尝试了以下代码,以明确指定wx.Panel大小但没有成功。

当我运行应用程序时,我发现wx.Panel的宽度大于100像素。

Actual wx.Panel width is about 125pixels instead of 100

有人可以帮助我确定这里没有正确使用的内容吗?

#!/bin/env python
import wx

# App Class
class MyAppTest6(wx.App):

    def OnInit(self):

        frame = AppFrame(title = u'Hello World', pos=(50, 60), size=(150, 250))
        frame.Show()
        #self.SetTopWindow(frame)
        return True

# Form Panel, 300 pixels Panel
class Form(wx.Panel):

    def __init__(self, parent):
        wx.Panel.__init__(self, parent, size=(100, 100))

        self.SetBackgroundColour('RED')
        self.SetInitialSize(
            (100,100)
        )
        self.SetSize(
            (100,100)
        )

# AppFrame
class AppFrame(wx.Frame):
    def __init__(self, title, pos, size):
        wx.Frame.__init__(self, None, -1, title, pos, size)

        # Define color
        self.SetBackgroundColour('LIGHTGREY')

        # Add elements
        self.form = Form(self)

        # Layout
        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.AddStretchSpacer()
        sizer.Add(self.form, 0, wx.CENTER)
        sizer.AddStretchSpacer()
        self.SetSizer(sizer)


if __name__ == '__main__':
        app = MyAppTest6(False)
        app.MainLoop()

1 个答案:

答案 0 :(得分:0)

如您在this问题中看到的那样,您可以在调用app.MainLoop()之前添加此内容:

import wx.lib.inspection
wx.lib.inspection.InspectionTool().Show()