Размеры... - wxPython
Итак, я изучаю размеры в wxPython, и мне было интересно, можно ли было сделать что-то вроде:
==============================================
|WINDOW TITLE _ [] X|
|============================================|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxNOTEBOOKxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|________ ___________|
|IMAGE | |LoginForm |
|________| |___________|
==============================================
ПРИМЕЧАНИЕ: да, я буквально получил это от wxPython - выбирая правильный размер для использования в приложении
С NOTEBOOK, развернутым влево и вниз, IMAGE для выравнивания по левому и нижнему краям, а loginform - по правому и нижнему, и мне удалось сделать почти все, но теперь у меня возникла проблема.
Проблема в том, что я не могу выровнять Loginform и Image отдельно (я использую Box Sizers), и я хотел бы.
РЕДАКТИРОВАТЬ: Таким образом, все могут видеть, что я имею в виду: "Да, и то, что я имел в виду, было в основном то, что, если я изменил выравнивание, это повлияет как на LoginForm, так и на изображение. Например, если я установлю выравнивание на RIGHT, и изображение, и форма входа была бы выровнена по правому краю из-за: 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 ответа
Как насчет этого?
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), и я бы хотел". В основном я просто следовал иллюстрации, пытаясь создать макет. Надеюсь, это поможет.
Просто отметив это здесь, я всегда обнаруживал, что проще сделать каркас кода в wxFormBuilder, а затем добавить код в свой проект, в отличие от метода проб и ошибок в чистом Python.