У меня есть только один кадр. У меня есть несколько панелей, встроенных в раму. Все они скрыты, кроме одного. Кнопка «Далее» выполняет .Hide () на этой панели, а затем вызывает функцию с именем .ShowYourself. Я хотел что-то похожее на волшебника, которое вы можете увидеть в предыдущем вопросе
Я пытаюсь поставить на панель сортировщик. Как вы можете видеть из картинки http://tinypic.com/r/14nh651/5,, я не могу заставить сортировщик занять всю панель. Изображение не отображается при предварительном просмотре, поэтому здесь оно находится на http://tinypic.com/r/14nh651/5.
import wx
import sys
class MyApp(
wx.App # This makes a subclass of the wx.App class
):
def OnInit(self):
# image = wx.Image('wxPython.jpg', wx.BITMAP_TYPE_JPEG)
self.frame = MyFrame(None)
self.frame.Show()
self.SetTopWindow(self.frame)
return True
def OnExit(self):
print 'Dying ...'
####################################################################################################
class MyFrame(
wx.Frame # This makes a subclass of the wx.Frame class
):
"""Frame class that displays an image."""
def __init__(self,
image,
parent=None, # "None" as a parameter means this is a top-level window
id=-1, # "-1" means automatically generate a new ID
title='Generic Title', # What words appear in the title bar?
pos=wx.DefaultPosition, # Where is the upper left-hand corner?
style=wx.CAPTION | wx.STAY_ON_TOP # Style with only a caption
):
"""Create a wx.Frame instance and display image."""
size = (500, 500)
wx.Frame.__init__(self, parent, id, 'Program Title', pos, size, style)
sizer_h = wx.BoxSizer(wx.HORIZONTAL)
self.panelX = TestLayout3(self)
sizer_h.Add(self.panelX)
self.SetSizer(sizer_h)
self.panelX.ShowYourself()
def ShutDown(self):
self.Destroy()
####################################################################################################
class TestLayout3(wx.Panel):
# 0 - Splash screen with "Next" and "Cancel and Exit" buttons
def __init__(self, parent, id=-1):
size = (600, 600)
wx.Panel.__init__(self, parent, id, size)
a, b, c, d, e, f, g = [wx.Button(self, -1, 4*c) for c in 'ABCDEFG']
a.SetMaxSize((200,100)) # 'a' won't get bigger than 200 wide
# build the top row (with sizers I usually work from inside to out)
hs0 = wx.BoxSizer(wx.HORIZONTAL)
hs0.Add(a, 1, wx.ALIGN_LEFT) # 1 here means expand with weight 1
hs0.Add((0,0), 1) # also expand the spacing
hs0.Add(b, 0, wx.ALIGN_RIGHT) # 0 means don't expand this
# build the bottom row
hs2 = wx.BoxSizer(wx.HORIZONTAL)
hs2.Add(d, 0, wx.ALIGN_LEFT)
hs2.Add((10,10), 0)
hs2.Add(e, 0)
hs2.Add((10,10), 0)
hs2.Add(f, 0)
hs2.Add((10, 10), 1)
hs2.Add(g, 0, wx.ALIGN_RIGHT)
# stack the rows vertically
vs = wx.BoxSizer(wx.VERTICAL)
vs.Add(hs0, flag=wx.EXPAND) # expand in the orthogonal direction to sizer (here horizontal)
vs.Add(c, 1, flag=wx.EXPAND)
vs.Add(hs2, flag=wx.EXPAND)
self.SetSizer(vs)
self.Raise()
self.SetPosition((0,0))
self.Fit()
self.Hide()
# reveal this panel
def ShowYourself(self):
self.Raise()
self.SetPosition((0,0))
self.Fit()
self.Show()
# what do we do when the "Back" button is clicked?
def OnBack(self, event):
self.Hide()
self.GetParent().panel1.ShowYourself()
# what do we do when the "Next" button is clicked?
def OnNext(self, event):
self.Hide()
self.GetParent().panel1.ShowYourself()
![# what do we do when the "Cancel and Exit" button is clicked?
def OnCancelAndExit(self, event):
self.GetParent().ShutDown()
####################################################################################################
def main():
app = MyApp(redirect = False)
app.MainLoop()
####################################################################################################
if __name__ == '__main__':
main()][3]