我希望这不是一个noobie问题,但我正在努力了解一个项目的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()
答案 0 :(得分:0)
欢迎使用Stackoverflow,
Sizer可能非常复杂,为了解决您的问题,您可以添加拉伸垫片:
topBarSizer.AddStretchSpacer();
我强烈建议您阅读Zetcode布局指南,因为它已多次帮助我。