У меня проблема с wxPython. У меня есть рамка, и в этом фрейме у меня есть панель. На этой панели мне нужна другая панель фиксированного размера (100x100). Мой код ниже:размер панели в панели с использованием wxPython неверно
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?
Я использую WxPython 3.0.2.0 на OS X.
Я не уверен, в чем ваша проблема. Когда я запускаю код на ubuntu 15.10 и python-wxgtk2.8 и python 2.7.8, код работает просто отлично –
Это странно, так как если я запустил этот код, он отобразится как блок 1x1, а не 100x100. Я думаю, это связано с OS X ... – Devos50
Это может быть причиной. Возможно, вы можете попробовать использовать функцию SizeHints вместо setMinSize для вашей белой панели. –