我在理解筛子方面有一些麻烦。
我的框架调用wx.Panel of AreaPanel类。在按下带有该面板活动的键盘按钮后,我希望创建一个新的wx.Panel of 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()发布于 2022-05-24 17:35:46
您正在为InventoryPanel创建一个sizer,并将InventoryPanel添加到这个sizer中。这不对。为AreaPanel创建一个sizer,并将库存面板添加到其中。(请遵循通常的约定,例如,init位于类的首位。)P.S.:你写信说你很难理解筛子。您可能想试试wxGlade。下载它并完成它的教程。它包括一节关于筛子。
https://stackoverflow.com/questions/72365186
复制相似问题