【发布时间】:2019-10-07 16:43:20
【问题描述】:
我正在尝试制作一个自定义窗口,它的作用类似于弹出窗口,并在失去焦点时关闭(点击弹出窗口外部)。
我有一个包含几个可点击图像的框架。如果单击其中一个图像,则会出现一个框架。此框架是一个基类,其内容(文本控件、网格、按钮等)会根据您单击的图像进行替换。我的问题是我应该在哪里捕捉什么事件。
我将尝试使用示例/伪代码进行简化。
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,但它们显然有一个不允许单选按钮的错误,这使它们对我来说毫无用处。
如果我没有任何意义,请告诉我,我会尽力解释得更好。
【问题讨论】:
标签: python python-3.x wxwidgets