ऐसे कई तरीके है
क) आप एक कस्टम बच्चे पैनल बना सकते हैं, और सभी बच्चे विजेट के शीर्ष के बीच 0,0 पर यह एक ही आकार और स्थिति बनाते हैं। नष्ट यह सिर्फ दिखाएँ/यह छुपाएं यह भी माता पिता फ्रेम
ख के साथ आकार बदलता है) की कोई जरूरत नहीं सही स्थान पर एक wx.PopupWindow या व्युत्पन्न वर्ग और जगह है और यह आकार पॉपअप
इतनी के रूप में एक में सुझाव देते हैं) यहाँ एक उदाहरण है, जहां सभी नियंत्रण पैनल में डाल रहे हैं आकार मापक का उपयोग कर, के रूप में अलग-अलग सहायता cntrl जो दिखाया जा सकता है/बटन से छिपा बनाई गई है है, लेकिन आप जो करीब
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.panel = wx.Panel(self)
# create controls
self.cntrlPanel = wx.Panel(self.panel)
stc1 = wx.StaticText(self.cntrlPanel, label="wow it works")
stc2 = wx.StaticText(self.cntrlPanel, label="yes it works")
btn = wx.Button(self.cntrlPanel, label="help?")
btn.Bind(wx.EVT_BUTTON, self._onShowHelp)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(stc1)
sizer.Add(stc2)
sizer.Add(btn)
self.cntrlPanel.SetSizer(sizer)
# create help panel
self.helpPanel = wx.Panel(self.panel)
self.stcHelp = wx.StaticText(self.helpPanel, label="help help help\n"*8)
btn = wx.Button(self.helpPanel, label="close[x]")
btn.Bind(wx.EVT_BUTTON, self._onShowCntrls)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.stcHelp)
sizer.Add(btn)
self.helpPanel.SetSizer(sizer)
self.helpPanel.Hide()
self.helpPanel.Raise()
self.helpPanel.SetBackgroundColour((240,250,240))
self.Bind(wx.EVT_SIZE, self._onSize)
self._onShowCntrls(None)
def _onShowHelp(self, event):
self.helpPanel.SetPosition((0,0))
self.helpPanel.Show()
self.cntrlPanel.Hide()
def _onShowCntrls(self, event):
self.cntrlPanel.SetPosition((0,0))
self.helpPanel.Hide()
self.cntrlPanel.Show()
def _onSize(self, event):
event.Skip()
self.helpPanel.SetSize(self.GetClientSizeTuple())
self.cntrlPanel.SetSize(self.GetClientSizeTuple())
app = wx.PySimpleApp()
frame = MyFrame()
frame.Show()
app.SetTopWindow(frame)
app.MainLoop()
स्रोत
2009-06-23 12:36:25
मुझे लगता है कि क्लिक करने पर ही छुपाता है एक कस्टम cntrl बना सकते हैं हो सकता है कि मैंने शब्द "ओवरले" गलत तरीके से इस्तेमाल किया ... मुझे एक डब्ल्यूएक्स चाहिए। पैनेल जो मुख्य Wx को कवर करेगा। पैनेल, इसे पूरी तरह छुपाएं। मैंने wx.Panel को छोड़कर जो किया था, मैंने कोशिश की, लेकिन मैं इसे हमेशा wx.Frame के आकार के अनुसार स्वयं कैसे समायोजित कर सकता हूं? –
प्रारंभ में पैनल = फ्रेम क्लाइंट/या आंतरिक पैनल का आकार सेट करें ऑनसाइज (EVT_SIZE) को ओवरराइड करें और फ़्रेम –
के आकार के अनुसार सहायता का आकार बदलें ठीक है, मैंने उदाहरण अपडेट किया है, इसलिए अब दो पैनल एक cntrl के लिए हैं और एक मदद के लिए है, दोनों आंतरिक रूप से साइज़र का उपयोग करके सीएनआरटीएल की व्यवस्था कर सकते हैं, और दोनों के पास अन्य पैनल में स्विच करने के लिए बटन है, वे मूल फ्रेम के साथ आकार बदलते हैं, इसका मतलब है कि आपको इसकी आवश्यकता है। लेकिन जैसा कि मैंने कहा कि ऐसा करने के कई तरीके हैं। –