親ウィンドウにドッキングしてそれをたどる単純なドッキングフレームを作成しようとしています。これまでのところ、次のものがあります。
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 の基本的な概念を理解していないようです。何が起こっていて、どうすれば修正できますか?
ドッキングをサポートしているように見えaui
ますが、ドキュメントがまばらなので試していません。を使用して別のFrame
ドックを作成する方法について、最小限の作業コード サンプルを誰かが提供できれば、私もそのアプローチを取ることができます。Frame
aui
pygame
このアプリではandも使用していることに注意してくださいtwisted
。これは、ここで干渉している場合と干渉していない場合があります...