簡體   English   中英

從主菜單控制三幀

[英]Control three frames from main menu

我分別創建了三個框架。 我需要從位於主框架中的按鈕的單擊事件中調用這些子框架。 當子框架打開時,我希望隱藏或禁用主框架,直到子框架關閉。 我怎樣才能做到這一點?

提前致謝。

我使用pubsub來做到這一點。 打開子框架后,立即調用主框架的Hide方法。 當我關閉一個子框架時,我使用pubsub讓主機知道它可以顯示自己。 您可以在這里看到一個相當簡單的教程:

http://www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-tutorial/

在打開子框架時,為每個框架創建一個事件隊列,設置一個變量,該變量在處理事件時進行檢查以加入隊列,然后在破壞子框架時將其取消設置。 如果設置了此變量,則丟棄消息,否則將其添加到隊列中進行處理。

取決於您使用的庫,大多數情況可能是一種不錯的內置方式。

您的子框架是否設置為以主框架為父框架? 如果是這樣,則可以只創建一個變量self.parent = parent,然后在關閉/銷毀子框架之前向OnClose處理函數添加一行以顯示父框架:

# Untested, although it should give you an idea of what to do

class ChildFrame(wx.Frame):

    def __init__(self, parent, id=-1, title="Default Frame", pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE):
        wx.Frame.__init__(self, parent, id, title, pos, size, style)
        self._parent = parent

        self.Bind(wx.EVT_CLOSE, self.OnClose)

    def OnClose(self, event):
        # display your parent frame
        self._parent.Show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM