wxPython左侧和右侧的布局项

2024-09-30 10:27:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望这不是一个简单的问题,但我正在努力理解WxPython的一个项目。我需要添加一个项目的左侧和右侧的顶部栏。你知道吗

Diagram of what I am trying to achieve

我已经包括下面的代码,我正在使用(我希望它不是太长)。你知道吗

有没有可能实现我的设想?你知道吗

我主要感兴趣的是了解我哪里出了问题,请,我一直在网上搜索,但找不到任何解决办法(特别是那些有体面的解释)。你知道吗

import wx

class MyPanel(wx.Panel):
    def __init__(self, parent, clientSize):
        super(MyPanel, self).__init__(parent, id=wx.ID_ANY, size=clientSize)

class MainDialog(wx.Frame):
    def __init__(self):
        super(MainDialog, self).__init__(None, title = 'Test name',
        size = (1024, 768), style = wx.CAPTION | wx.SYSTEM_MENU | wx.RESIZE_BORDER)

        # Create the window client panel.
        clientSize = self.GetClientSize()
        self.__panel = MyPanel(self, self.GetClientSize())

        self.__CreateInterface()

        self.SetMinSize((1024, 765))
        self.__panel.Layout()

    def __CreateInterface(self):

        self.__panelSizer = wx.BoxSizer(wx.VERTICAL)

        topBarSizer = wx.BoxSizer(wx.HORIZONTAL)

        img = wx.Image("avatar.png", wx.BITMAP_TYPE_ANY)
        sb1 = wx.StaticBitmap(self.__panel, -1, wx.BitmapFromImage(img))
        topBarSizer.Add(sb1, flag=wx.LEFT | wx.TOP | wx.ALIGN_LEFT, border=10)

        userDataSizer = wx.BoxSizer(wx.VERTICAL)

        labelCtl = wx.StaticText(self.__panel,
            label='USER INFO:', style=wx.ALIGN_RIGHT, size=(350, -1))
        userDataSizer.Add(labelCtl,
            flag = wx.LEFT | wx.RIGHT | wx.TOP | wx.ALIGN_RIGHT, border = 8)

        l1 = wx.StaticText(self.__panel, label = 'Glitter Gem',
        style=wx.ALIGN_RIGHT, size = (350, -1))
        userDataSizer.Add(l1, flag = wx.LEFT | wx.RIGHT | wx.ALIGN_RIGHT,
            border = 8)

        topBarSizer.Add(userDataSizer, flag = wx.ALIGN_RIGHT|wx.EXPAND)

        self.__panelSizer.Add(topBarSizer, 0, wx.EXPAND, border = 8)
        self.__panel.SetSizer(self.__panelSizer)


class TestApp(wx.App):

    def OnInit(self):
        mainDialog = MainDialog()
        mainDialog.Show(True)
        return True

app = TestApp()
app.MainLoop()

Tags: selfrightaddsizeinitdefleftclass
1条回答
网友
1楼 · 发布于 2024-09-30 10:27:57

欢迎来到Stackoverflow

尺寸调整器可能非常复杂,要解决您的问题,您可以添加拉伸间隔:

    topBarSizer.AddStretchSpacer();

我强烈建议您阅读Zetcode版面指南,因为它已经帮助了我很多次。你知道吗

相关问题 更多 >

    热门问题