Я новичок в wxpython Я пытаюсь иметь рамку и внутри нее небольшую область панели, которую я окрашиваю в синий цвет. Однако независимо от того, что я делаю wx.Panel с использованием атрибута size, отдельная панель привязывается к размеру его родительского фрейма. Если я добавлю другую панель (pane2 в коде ниже), обе панели рисуются в правильном размере.wx.Panel весы, чтобы соответствовать всем родителям Рамка, несмотря на то, что она дала размер
Я знаю, что могу управлять этими панелями с помощью sizers. Но я пытался понять, почему объект wx.Panel ведет себя так, как он это делает, когда он в одиночку.
Вот код:
импорт WX
class PlateGui(wx.Frame):
def __init__(self, *args , **kwds):
self.frame = wx.Frame.__init__(self,*args, **kwds)
print "Made frame"
if __name__ == "__main__":
an_app = wx.PySimpleApp()
aframe = PlateGui(parent=None,id=-1,title="Test Frame",size=(300, 300))
pane = wx.Panel(parent=aframe,size=(100,100),style=wx.RAISED_BORDER)
pane.SetBackgroundColour(wx.Colour(0,0,255))
# pane2 = wx.Panel(parent=aframe,size=(200,100),style=wx.RAISED_BORDER)
# Commenting out the second pane makes the first pane fit
# entire frame regardless of size specified
aframe.Show()
an_app.MainLoop()
Потрясающих FogleBird- благодарю за тонну - Это «особенность» в wx.Frame навязывании своей Sizer на своем единственном ребенке не очень хорошо документирован, или это ?. Я боролся часами, а затем, когда я, наконец, добавил вторую панель, wx.Frame выпустил первую панель из своего sizer. Есть ли место в документации, из которой я мог бы это понять? Я бы проголосовал за вас, но я новичок в Stackoverflow, и я думаю, новичок благодарю вас, что вам не поможет. Спасибо за ответ на этот вопрос в любом случае – harijay
Отсюда: http://docs.wxwidgets.org/stable/wx_wxframe.html#wxframe «Если кадр имеет ровно одно дочернее окно, не считая состояния и панели инструментов, этот размер изменяется чтобы взять всю область клиентского фрейма ». Вы должны проголосовать за меня, если вам нравится мой ответ. Вы должны пометить мой ответ как правильный, если вы считаете, что это так. Неважно, насколько вы новы. :) – FogleBird
Эй, спустя годы у меня возник вопрос: скажу, что мне все еще нужен сизер, но мне также хотелось бы, чтобы панель вписывалась в родительский фрейм, что мне нужно делать? 'sizer.add (panel, wx.EXPAND)' не работает, похоже. – TankorSmash