【发布时间】:2013-03-18 21:59:47
【问题描述】:
我正在尝试制作一个简单的停靠框架,它将停靠到父窗口并跟随它。到目前为止,我有以下内容:
class DockingFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, style=wx.CAPTION)
parent.Bind(wx.EVT_MOVE, self.OnParentMove)
parent.Bind(wx.EVT_ACTIVATE, self.OnParentActivate)
parent.Bind(wx.EVT_SHOW, self.OnParentShow)
def OnParentMove(self, moveEvent):
print "Docked frame parent moved"
pr = positioning.position(
self.Rect,
my='right_top', at='left_top', of=self.Parent.Rect)
self.Move(pr.top_left)
moveEvent.Skip()
def OnParentActivate(self, event):
print "Docked frame parent activated"
self.Raise()
event.Skip()
def OnParentShow(self, event):
print "Docked frame parent showed"
self.Show(event.GetShow())
event.Skip()
class MainFrame(wx.Frame):
def __init__(self, title):
wx.Frame.__init__(self, None, title=title)
self.info_frame = DockingFrame(self)
self.Show(True)
这是因为如果我移动父窗口,停靠的窗口会随之移动,如果我单击父窗口,停靠的窗口会自行升起。但是,它严重干扰了父窗口的功能。我无法再关闭或重新调整父窗口的大小,并且每当我单击父窗口时,都会收到大量“已激活停靠框架父窗口”的消息。看来我不明白一些基本的 wxPython 概念,here。发生了什么,我该如何解决?
我看到aui 似乎支持对接,但文档很少,所以我没有尝试过。如果有人可以提供一个最小的工作代码示例,说明如何使用aui 将Frame 停靠到另一个Frame,我也可以采用这种方法。
请注意,我还在此应用中使用pygame 和twisted,这可能会或可能不会干扰这里...
【问题讨论】:
-
啊,似乎
.Raiseing 孩子正在让父母和孩子争夺谁被激活...有没有办法Raise没有这种效果?
标签: python wxpython wxwidgets docking