Я пытаюсь создать приложение с несколькими панелями, используя Wx python - AuiManager. У меня проблема в том, что, если я использую центрирование для панелей, я не могу изменить размер, используя вертикальный сплиттер. И если я попытаюсь предоставить размер скотча, он им не пользуется. Я вижу, что при использовании бестабора клиентская область панелей уменьшается и, следовательно, не использует полноэкранную область.
Ниже приведен минимальный рабочий пример. Обе опции можно переключать, изменяя значение истинности центральной переменной. Может кто-нибудь помочь мне заставить это работать. Я не хочу использовать Splitter Windows, так как он требует доработки, если я решу увеличить / уменьшить количество панелей.
#!/usr/bin/env python3
import wx
import wx.lib.inspection
import wx.lib.agw.aui as aui
class Temp(wx.Frame):
def __init__(self, parent, *args, **kw):
super().__init__(*args, **kw)
self.InitUI()
def InitUI(self):
size = wx.DisplaySize()
x, y = size
self.SetSize(size)
self.SetClientSize(size)
self.ab = wx.TextCtrl(self, style=wx.TE_PROCESS_ENTER)
self.mgr = aui.AuiManager(self, aui.AUI_MGR_ALLOW_ACTIVE_PANE)
self.mgr.AddPane(self.ab, aui.AuiPaneInfo().Top().
CaptionVisible(False).Name("ab").Layer(2))
center = True
for idx in range(4):
name = f"Pane {idx+1}"
if center:
inf = aui.AuiPaneInfo().Name(name).CaptionVisible(False). \
Layer(idx % 2).Center()
else:
inf = aui.AuiPaneInfo().Name(name). \
CaptionVisible(False).Layer(idx % 2).BestSize(1920, -1)
pane = wx.Panel(self)
pane.SetClientSize(size)
self.mgr.AddPane(pane, inf)
self.mgr.Update()
self.SetTitle("Example")
self.Show()
def main():
wx.Log.EnableLogging(False) # Temporary disable to prevent locale error
app = wx.App(redirect=False)
n = Temp(app, None)
wx.lib.inspection.InspectionTool().Show()
app.MainLoop()
if __name__ == '__main__':
main()
Я использую KDE - если это имеет значение