Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » "Прижать к низу" содержимое нижнего слота Vertical Sizer [RSS Feed]

#1 Ноя. 9, 2011 10:12:46

Goliath
От:
Зарегистрирован: 2011-09-22
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

"Прижать к низу" содержимое нижнего слота Vertical Sizer

Я разбираюсь с созданием GUI с помощью wxGlade и у меня возник вопрос. На картинке ниже у меня представлено окошко wxGlade. sizer_3 - это горизонтальный Sizer с двумя кнопками. Как мне его “прижать к низу” ? ( При этом можно снизу сделать небольшой, постоянный отступ. sizer_2 - это вертикальный sizer, видимо нужно что-то сделать с sizer_3. Возможно ли это?



Офлайн

#2 Ноя. 9, 2011 11:55:46

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

"Прижать к низу" содержимое нижнего слота Vertical Sizer

не знаком с wxGlade, но можешь попробовать засунуть его в вертикальный Box (который будет parent по сравнению с твоим текущим child)
без кода сложно сказать, и линк не открывается с картинкой.

Чтоб был прижат к низу по идее при добавлении к сайзеру используется ключ proportion=1, для добавляемой ячейки т.е. что то типа:
parentSizer.Add(childSizer, proportion=1)

вот интересная статья по сайзерам http://jenyay.net/Programming/WxSizer мб поможет

Отредактировано (Ноя. 9, 2011 11:57:07)

Офлайн

#3 Ноя. 9, 2011 12:58:52

Goliath
От:
Зарегистрирован: 2011-09-22
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

"Прижать к низу" содержимое нижнего слота Vertical Sizer

Piton23
не знаком с wxGlade, но можешь попробовать засунуть его в вертикальный Box (который будет parent по сравнению с твоим текущим child)
без кода сложно сказать, и линк не открывается с картинкой.

Чтоб был прижат к низу по идее при добавлении к сайзеру используется ключ proportion=1, для добавляемой ячейки т.е. что то типа:
parentSizer.Add(childSizer, proportion=1)

вот интересная статья по сайзерам http://jenyay.net/Programming/WxSizer мб поможет
Спасибо, вот генерируемый код:
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
# generated by wxGlade HG on Wed Nov 09 13:50:00 2011

import wx

# begin wxGlade: extracode
# end wxGlade


class EditWindow(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: EditWindow.__init__
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.label_1 = wx.StaticText(self, -1, "Base Address:")
self.spinBaseAddress = wx.SpinCtrl(self, -1, "", min=0, max=1000)
self.label_2 = wx.StaticText(self, -1, "Low Bound:")
self.spinHighBound = wx.SpinCtrl(self, -1, "", min=-1000, max=1000)
self.label_3 = wx.StaticText(self, -1, "High Bound:")
self.spinLowBound = wx.SpinCtrl(self, -1, "", min=-1000, max=1000)
self.buttonSave = wx.Button(self, -1, "Save")
self.buttonClose = wx.Button(self, -1, "Close")

self.__set_properties()
self.__do_layout()

self.Bind(wx.EVT_BUTTON, self.SaveButtonClick, self.buttonSave)
self.Bind(wx.EVT_BUTTON, self.CloseButtonClick, self.buttonClose)
# end wxGlade

def __set_properties(self):
# begin wxGlade: EditWindow.__set_properties
self.SetTitle("frame_2")
# end wxGlade

def __do_layout(self):
# begin wxGlade: EditWindow.__do_layout
sizer_2 = wx.BoxSizer(wx.VERTICAL)
sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
grid_sizer_1 = wx.GridSizer(3, 2, 5, 5)
grid_sizer_1.Add(self.label_1, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0)
grid_sizer_1.Add(self.spinBaseAddress, 0, 0, 0)
grid_sizer_1.Add(self.label_2, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0)
grid_sizer_1.Add(self.spinHighBound, 0, 0, 0)
grid_sizer_1.Add(self.label_3, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0)
grid_sizer_1.Add(self.spinLowBound, 0, 0, 0)
sizer_2.Add(grid_sizer_1, 1, wx.EXPAND, 0)
sizer_2.Add((20, 20), 0, 0, 0)
sizer_3.Add(self.buttonSave, 0, 0, 0)
sizer_3.Add(self.buttonClose, 0, 0, 0)
sizer_2.Add(sizer_3, 1, wx.EXPAND, 0)
self.SetSizer(sizer_2)
sizer_2.Fit(self)
self.Layout()
# end wxGlade

def SaveButtonClick(self, event): # wxGlade: EditWindow.<event_handler>
print "Event handler `SaveButtonClick' not implemented"
event.Skip()

def CloseButtonClick(self, event): # wxGlade: EditWindow.<event_handler>
print "Event handler `CloseButtonClick' not implemented"
event.Skip()

# end of class EditWindow
if __name__ == "__main__":
app = wx.PySimpleApp(0)
wx.InitAllImageHandlers()
frame_1 = (None, -1, "")
app.SetTopWindow(frame_1)
frame_1.Show()
app.MainLoop()



Офлайн

#4 Ноя. 9, 2011 16:45:00

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

"Прижать к низу" содержимое нижнего слота Vertical Sizer

О наконецто рисунок вижу, лучше б в пэинте нарисовал(передвинул) как надо, чтоб видеть какой ты хочешь результат.
Тут одно из двух:
1) либо тебе надо убрать пространство, где 2 кнопки остаются на местах своих
2) либо тебе надо размер окна (общий фрэйм) оставить таким ж и чтоб после 6 ячеек было пустое пространство и в самом низу были 2 кнопки

решение для второй задачи:
вон у тебя есть sizer_3 горизонтальный с двумя ячейками (кнопками), в каждой из них пропишешь flag = wx.ALIGN_BOTTOM. Но визуального эфекта не будет, надо также растянуть последнюю ячейку (ячейка представляет собой sizer_3) вертикального сайзера (он же sizer_2). А чет присмотрелся у тебя он и стоит в 1, т.е. растянут
что то типа:
sizer_3.Add(self.buttonSave, flag = wx.ALIGN_BOTTOM)
sizer_3.Add(self.buttonClose, flag = wx.ALIGN_BOTTOM)
sizer_2.Add(sizer_3, 1, wx.EXPAND, 0)
по идее все, дальше думать

решение для первой задачи: использовать другой тип сайзера, так с ходу не скажу, но статья поможет там все подробно описано

Офлайн

#5 Ноя. 10, 2011 09:21:41

Goliath
От:
Зарегистрирован: 2011-09-22
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

"Прижать к низу" содержимое нижнего слота Vertical Sizer

Piton23
О наконецто рисунок вижу, лучше б в пэинте нарисовал(передвинул) как надо, чтоб видеть какой ты хочешь результат.
Тут одно из двух:
1) либо тебе надо убрать пространство, где 2 кнопки остаются на местах своих
2) либо тебе надо размер окна (общий фрэйм) оставить таким ж и чтоб после 6 ячеек было пустое пространство и в самом низу были 2 кнопки

решение для второй задачи:
вон у тебя есть sizer_3 горизонтальный с двумя ячейками (кнопками), в каждой из них пропишешь flag = wx.ALIGN_BOTTOM. Но визуального эфекта не будет, надо также растянуть последнюю ячейку (ячейка представляет собой sizer_3) вертикального сайзера (он же sizer_2). А чет присмотрелся у тебя он и стоит в 1, т.е. растянут
что то типа:
sizer_3.Add(self.buttonSave, flag = wx.ALIGN_BOTTOM)
sizer_3.Add(self.buttonClose, flag = wx.ALIGN_BOTTOM)
sizer_2.Add(sizer_3, 1, wx.EXPAND, 0)
по идее все, дальше думать

решение для первой задачи: использовать другой тип сайзера, так с ходу не скажу, но статья поможет там все подробно описано
спасибо большое! проблема решения, как раз то, что и нужно



Офлайн

  • Начало
  • » GUI
  • » "Прижать к низу" содержимое нижнего слота Vertical Sizer[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version