WxPython自定义弹出窗口

时间:2019-05-21 09:55:05

标签: python python-3.x wxwidgets

我正在尝试制作一个自定义窗口,其作用类似于弹出窗口,并在失去焦点时关闭(在弹出窗口之外单击)。

我有一个带有多个可点击图像的框架。如果单击其中一张图像,将显示一个框。此框架是基本类,其内容(文本控件,网格,按钮e.t.c)将根据您单击的图像进行替换。我的问题是应该在哪里捕获什么事件。

我将尝试通过示例/伪代码来简化。

class MainFrame(MainFrameDefinition):
    # unimportant code
    custom_frame_holder = CustomFrame()
    for child_panel in self.lots_of_panels:
        # add a panel to a map and set
        custom_frame_holder.panel = child_panel

class CustomFrame(wx.Frame):
    def __init__(self, parent):
        # unimportant code
        self.panel = # a panel that changes
        self.Bind(wx.EVT_KILL_FOCUS, self.lost_focus)

    def lost_focus(self, event):
        self.Hide()

那么军官问题似乎是什么?当我单击CustomFrame中的控件时,框架失去焦点,窗口将隐藏。 我尝试捕获EVT_CHILD_FOCUS,然后将焦点设置回框架,但是,由于框架具有焦点,因此我无法用文本控件编写文本。

我看过wxPopup和wxTransientPopup,但是它们显然有一个不允许单选按钮的错误,这使它们对我毫无用处。

让我知道我是否没有道理,我会尽力解释得更好。

1 个答案:

答案 0 :(得分:0)

为此目的使用wxEVT_ACTIVATE(可能在wx.EVT_ACTIVATE中使用wxPython)。

认为弹出窗口中的单选按钮问题已在行李箱中修复。