如何制作wx.面板填充其父面板

  • 本文关键字:填充 何制作 wx wxpython
  • 更新时间 :
  • 英文 :


我对size的理解有些困难。

我的框架调用一个wx。AreaPanel类的面板。在按下键盘按钮并激活该面板后,我想创建一个新的wx。InventoryPanel类的面板,它应该填充整个AreaPanel。它不是。我尝试把Layout()调用放在不同的地方,但显然这不是原因。

def Initialize():
app = wx.App()
frame = wx.Frame(None, title='Project')
frame.SetSize(width = 1480, height = 600)
arpanel = AreaPanel(frame)
frame.Show()
app.MainLoop()

class AreaPanel(wx.Panel):
def OnKeyPress(self,e):
key = e.GetKeyCode()
print(str(key) + ' on panel: '+self.__class__.__name__)
if key == wx.WXK_ESCAPE:
quit()
elif key == wx.WXK_NUMPAD6:
invpanel = InventoryPanel(self)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(invpanel,wx.GROW,wx.EXPAND)
invpanel.SetSizer(sizer)
self.Layout()
self.Parent.Layout()
def __init__(self, parent):
super().__init__(parent)
self.SetDoubleBuffered(True)
font = wx.Font(9, wx.DEFAULT, wx.NORMAL, wx.DEFAULT)
font.SetFaceName('Courier New')
text = (('AreaPanel label.' * 10) + 'n') * 20
self.mainText = wx.StaticText(parent, label=text, style=wx.ALIGN_LEFT)
self.mainText.SetFont(font)
self.Bind(wx.EVT_KEY_DOWN, self.OnKeyPress)
self.SetFocus()
def DestroyChildPanel(self,child):
child.Destroy()
self.SetFocus()
class InventoryPanel(wx.Panel):
def OnKeyPress(self, e):
key = e.GetKeyCode()
print(str(key) + ' on panel: ' + self.__class__.__name__)
if key == wx.WXK_ESCAPE:
quit()
elif key == 83:
self.Parent.DestroyChildPanel(self)
def __init__(self, parent):
super().__init__(parent)
self.SetDoubleBuffered(True)
font = wx.Font(9, wx.DEFAULT, wx.NORMAL, wx.DEFAULT)
font.SetFaceName('Courier New')
text = (('InventoryPanel label. S to leave.' * 9) + 'n') * 15
self.mainText = wx.StaticText(parent, label=text, style=wx.ALIGN_LEFT)
self.mainText.SetFont(font)
self.Bind(wx.EVT_KEY_DOWN, self.OnKeyPress)
self.SetFocus()

您正在为InventoryPanel创建一个大小大小,并将InventoryPanel添加到该大小大小。这是不对的。为AreaPanel创建一个大小,并添加库存面板。(请遵循通常的约定,例如init在班上名列前茅。)附言:你写到你很难理解尺寸。你可能想试试wxGlade。下载它并学习它的教程。它包括一个关于尺寸的部分。

最新更新