使用wxPython的面板中面板的大小不正确(size of panel in panel using wxPython incorrect)

系统教程 行业动态 更新时间:2024-06-14 16:58:00
使用wxPython的面板中面板的大小不正确(size of panel in panel using wxPython incorrect)

我有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。

I have a problem with wxPython. I have a frame and in that frame, I have a panel. In that panel, I want another panel of fixed size (100x100). My code is below:

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()

When I run the program, my TestPanel widget is only 1x1 pixels. However, when I print the size using the GetSize method, it says that the size is 100x100. Why does it display as a 1x1 red block in this case?

I'm using wxPython 3.0.2.0 on OS X.

最满意答案

我不确定为什么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()

I'm not sure why SetSize() doesn't work, but you can just pass the size to the constructor. That worked for me on Windows 7 with wxPython 3.0.2 where calling SetSize did not.

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()

更多推荐

本文发布于:2023-04-14 05:21:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/dzcp/0bc1677be5b0b7b490b487e164ecc859.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:面板   不正确   大小   wxPython   panel

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!