我遇到了wxPython的问题。我有一个框架,在那个框架中,我有一个面板。在那个面板中,我想要另一个固定尺寸的面板(100x100)。我的代码如下:
import wx
class TestPanel(wx.Panel):
def __init__(self, *args, **kwargs):
wx.Panel.__init__(self, *args, **kwargs)
self.SetBackgroundColour(wx.RED)
self.SetSize((100, 100))
class ExampleFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent)
self.panel = wx.Panel(self)
self.panel.SetMinSize((-1, -1))
self.panel.SetBackgroundColour(wx.WHITE)
self.filesize = TestPanel(self.panel, -1)
hSizer = wx.BoxSizer(wx.HORIZONTAL)
hSizer.Add(self.filesize, 0, wx.CENTER)
vSizer = wx.BoxSizer(wx.VERTICAL)
vSizer.Add(hSizer, 1, wx.EXPAND)
self.panel.SetSizer(vSizer)
app = wx.App(False)
frame = ExampleFrame(None)
frame.Show()
app.MainLoop()
当我运行程序时,我的TestPanel
窗口小部件只有1x1像素。但是,当我使用GetSize
方法打印大小时,它表示大小为100x100。为什么在这种情况下它会显示为1x1红色块?
我在OS X上使用wxPython 3.0.2.0。
答案 0 :(得分:1)
我不确定为什么SetSize()
不起作用,但您可以将大小传递给构造函数。这对我在Windows 7上使用wxPython 3.0.2起作用,其中调用SetSize
没有。
import wx
class TestPanel(wx.Panel):
def __init__(self, *args, **kwargs):
wx.Panel.__init__(self, size=(100, 100), *args)
self.SetBackgroundColour('red')
self.Layout()
class ExampleFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent)
self.panel = wx.Panel(self)
self.panel.SetMinSize((-1, -1))
self.panel.SetBackgroundColour(wx.WHITE)
self.filesize = TestPanel(self.panel, -1)
hSizer = wx.BoxSizer(wx.HORIZONTAL)
hSizer.Add(self.filesize, 0, wx.CENTER)
vSizer = wx.BoxSizer(wx.VERTICAL)
vSizer.Add(hSizer, 1, wx.EXPAND)
self.panel.SetSizer(vSizer)
import wx.lib.inspection
app = wx.App(False)
frame = ExampleFrame(None)
frame.Show()
wx.lib.inspection.InspectionTool().Show()
app.MainLoop()