【问题标题】:wxPython - Layout item on left and rightwxPython - 左右布局项目
【发布时间】:2018-05-17 03:12:24
【问题描述】:

我希望这不是一个菜鸟问题,但我正在尝试为一个项目了解 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()

【问题讨论】:

    标签: python python-2.7 layout wxpython


    【解决方案1】:

    欢迎来到 Stackoverflow,

    Sizer 可能非常复杂,要解决您的问题,您可以添加一个拉伸垫片:

        topBarSizer.AddStretchSpacer();
    

    我强烈建议您阅读 Zetcode 布局指南,因为它帮助了我很多次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-15
      • 1970-01-01
      • 2021-01-26
      • 1970-01-01
      • 2013-10-02
      • 2012-09-12
      • 1970-01-01
      • 2021-10-24
      相关资源
      最近更新 更多