Python/wxPython: AUI管理器,防止面板离开窗口

2 投票
1 回答
1280 浏览
提问于 2025-04-17 08:23

我正在使用下面的代码来测试AUI的一些功能。如果你运行这段代码,你会看到一个框架里面有两个面板,这些面板可以被分离或漂浮。不过,这些面板可以在屏幕上随意拖动。我想要防止面板离开主框架。这样做可能吗?我以为会有一个标志或者什么可以更改的设置,但我到现在还没有找到。

谢谢!

代码:

import wx
from wx.lib.agw import aui

class TestPanel(wx.Panel):
    def __init__(self, *args, **keys):
        wx.Panel.__init__(self, *args, **keys)
        self.textCtrl = wx.StaticText( self, wx.ID_ANY, 'AGW is a very nice library!' )

class TestFrame(wx.Frame):
    def __init__(self, *args, **keys):
        wx.Frame.__init__(self, *args, **keys)
        self.mgr = mgr = aui.AuiManager_DCP()
        mgr.SetManagedWindow( self )
        mgr.AddPane( TestPanel(self), aui.AuiPaneInfo().Name('p1').Caption('p1').Right().BestSize((100,100)) )
        mgr.AddPane( TestPanel(self), aui.AuiPaneInfo().Name('p2').Caption('p2').Bottom().BestSize((100,100)) )
        mgr.Update()


if __name__ == '__main__':
    app = wx.App( redirect = False )
    frame = TestFrame( None, title = 'AUI test', size = (300, 400) )
    frame.Show()
    app.MainLoop()

1 个回答

2

AuiPaneInfo() 里,你可以给不想让它浮动的面板加上 Floatable(False) 这个设置:

wx.aui.AuiPaneInfo().Left().Floatable(False)

撰写回答