python - 测量器... - wxPython

标签 python wxpython boxsizer

好的,所以我正在学习 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 Sizers),但我愿意。

编辑:所以每个人都能明白我的意思: “哦,我指的是,基本上,如果我改变对齐方式,它会同时影响 LoginForm 和图像。例如,如果我将对齐方式设置为 RIGHT,则图像和 loginform 都会向右对齐,因为: sizer.Add(sizer4,0, wx.ALIGN_RIGHT | wx.RIGHT, 10) 希望大家这次能看懂”

这是目前导致问题的我正在使用的代码,我们将不胜感激。 注意:代码可能(非常)草率,因为我仍在学习 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()

最佳答案

这样的事情怎么样?

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 Sizers),我想这样做”是什么意思。我主要只是按照插图尝试创建布局。我希望这会有所帮助。

关于python - 测量器... - wxPython,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2619718/

相关文章:

python - plotly : Pandas 数据帧错误:模块 'plotly.express.data' 没有属性

Python:避免此代码的 if 条件?

python - 从 wxPython 开始

python - Wxpython EVT_CHAR 回调未被调用

python - 简单的 wxPython 框架内容调整大小 - 比率?

python - boxsizer 内的 wxpython 笔记本

python - 这是用 Python 编写 Luhn 算法的最有效方法吗?

python - WxPython - 添加新内容时调整 WxFrame 大小?

python - 在框架wxpython中对齐列表框

python - 检测鼠标是否离开 Pygame 窗口