Размеры ... - wxPython - PullRequest
       29

Размеры ... - wxPython

3 голосов
/ 12 апреля 2010

Хорошо, я изучаю размеры в wxPython, и мне было интересно, можно ли сделать что-то вроде:

==============================================
|WINDOW TITLE                          _ [] X|
|============================================|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxNOTEBOOKxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|________                         ___________|
|IMAGE   |                       |LoginForm  |
|________|                       |___________|
==============================================

ПРИМЕЧАНИЕ: Да, я буквально получил это от wxPython - выбирая правильный размер для использования в приложении

С NOTEBOOK, развернутым влево и вниз, ИЗОБРАЖЕНИЕ для выравнивания влево и вниз и логинформ для выравнивания вправо и вниз, и мне удалось сделать почти все, но теперь у меня проблема ..

Проблема в том, что я не могу совместить Loginform и Image по отдельности (я использую Box Sizers), и я бы хотел.

РЕДАКТИРОВАТЬ: Таким образом, каждый может понять, что я имею в виду: «О, и я имел в виду, что если бы я изменил выравнивание, это затронуло бы и LoginForm, и Image. Например, если бы я установил выравнивание на RIGHT, и image, и loginform были бы выровнены вправо из-за : sizer.Add (sizer4,0, wx.ALIGN_RIGHT | wx.RIGHT, 10). Надеюсь, вы, ребята, сможете понять это время "

Это код, который я использую, который вызывает проблему в настоящее время, любая помощь приветствуется. ПРИМЕЧАНИЕ. Код может быть (НАСТОЯТЕЛЬНО) неаккуратным, так как я все еще изучаю размеры блоков. Вот тестовый код:

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()

Ответы [ 2 ]

5 голосов
/ 12 апреля 2010

Как насчет этого?

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), и я бы хотел». В основном я просто следовал иллюстрации, пытаясь создать макет. Надеюсь, это поможет.

0 голосов
/ 13 июля 2015

Просто отметив это здесь, я всегда обнаруживал, что проще создать каркас кода в wxFormBuilder , а затем добавить код в свой проект, в отличие от метода проб и ошибок в чистом Python.

...