好的,所以我正在学习wxPython中的sizer,我想知道是否有可能做类似的事情:
==============================================
|WINDOW TITLE _ [] X|
|============================================|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxNOTEBOOKxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|________ ___________|
|IMAGE | |LoginForm |
|________| |___________|
==============================================
注意:是的,我确实从wxPython - picking the right sizer to use in an application
得到了这个随着NOTEBOOK向左和向下扩展,IMAGE左对齐和下对齐,loginform对齐到右边和底部,我设法做了几乎所有事情,但现在我遇到了问题..
问题在于我无法单独对齐Loginform和Image(我正在使用Box Sizer),我想。
编辑:所以每个人都可以看到我的意思: “哦,我所指的是,基本上如果我更改了对齐,它会影响LoginForm和Image ..例如,如果我将对齐设置为RIGHT,则图像和loginform都会向右对齐,因为:sizer.Add(sizer4,0,wx.ALIGN_RIGHT | wx.RIGHT,10)。希望你们这次能理解“
这是我正在使用的代码,目前导致问题,任何帮助表示赞赏。 注意:代码可能是(HUGELY)草率,因为我还在学习box sizer。 下面是测试代码:
import wx
class Sizerframe(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'sizertestframe',size=(790, 524))
p = wx.Panel(self)
nb = wx.Notebook(p, size = (750, 332))
button = wx.Button(p, -1, "loginform1rest", size=(94,23))
button1 = wx.Button(p, -1, "Login", size=(94,23))
button2 = wx.Button(p, -1, "Cancel", size=(94,23))
imagebutton = wx.Button(p, -1, "imagebutton", size=(94,23))
sizer = wx.BoxSizer(wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(nb,1, wx.EXPAND)
sizer.Add(sizer1,1, wx.LEFT | wx.RIGHT | wx.EXPAND, 10)
sizer.Add((-1, 25))
sizer2 = wx.BoxSizer(wx.VERTICAL)
sizer2.Add(button, 0)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(button1, 0)
sizer3.Add(button2,0, wx.LEFT, 5)
sizer2.Add(sizer3, 0)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(imagebutton, 1, wx.LEFT | wx.BOTTOM)
sizer4.Add(sizer2,0, wx.RIGHT | wx.BOTTOM , 5)
sizer.Add(sizer4,0, wx.ALIGN_RIGHT | wx.RIGHT, 10)
p.SetSizer(sizer)
def main():
app = wx.App()
frame = Sizerframe()
frame.Show()
app.MainLoop()
if __name__ == '__main__':
main()
答案 0 :(得分:5)
这样的事情怎么样?
container = wx.BoxSizer(wx.VERTICAL)
container.Add(self.nb, 1, wx.EXPAND)
login = wx.BoxSizer(wx.VERTICAL)
login.Add(self.userLabel)
login.Add(self.userText)
# ... clip, rest of login form additions here
bottom = wx.BoxSizer(wx.HORIZONTAL)
bottom.Add(image)
bottom.Add((0, 0), 1, wx.EXPAND)
bottom.Add(login)
container.Add(bottom, 1, wx.EXPAND)
基本上,bottom.Add((0, 0), 1, wx.EXPAND)
将充当间隔符,占据图像和登录表单之间的所有空间。我真的不明白你的意思“问题是我不能单独对齐Loginform和Image(我正在使用Box Sizer),我想”。我大多只是按照图示尝试创建布局。我希望这会有所帮助。
答案 1 :(得分:0)
在这里标记,我总是发现在wxFormBuilder中制作代码框架更容易,然后将代码添加到项目中,而不是反复试验在纯Python中。