Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

wxWidgets панель со скролом

30K
07 марта 2008 года
ackii_3aya
16 / / 07.03.2008
Нужно сделать следующий интерфейс: панель в ней идут несколько элементов, далее еще одна панель, но в ней таблица которая меняет размер. Нужно этой второй панеле задать статичный размер и сделать скролирование если таблица больше размера это панели. ну или может какой другой виджет это позволит реализовать.
собсно вот код как я это делаю, но сдесь панель вторая принимает размер таблици и скролирование не работает:
(язык питон. но решения проблемы можете кидать на любом языке)
Код:
#!/usr/bin/env python

import wx                  
import  wx.grid as  gridlib

#---------------------------------------------------------------------------

class table(gridlib.Grid):
    def __init__(self, parent):
        gridlib.Grid.__init__(self, parent, -1)
        self.CreateGrid(10,10)
        #self.SetSize((20,20))

class MyFrame(wx.Frame):

    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title)
       
        self.SetSize((640,480))
        panel = wx.Panel(self)
       
        border = wx.BoxSizer(wx.VERTICAL)
       
        methods = [u"Минимаксный критерий принятия решений",
                    u"Критерий Байеса–Лапласа",
                    u"Критерий Сэвиджа",
                    u"Производные критерии принятия решений",
                    u"Критерий принятия решений Гермейера",
                    u"Критерий произведений"]
        self.rb = wx.RadioBox(
                panel, -1, u"Методы:", (-1, -1), (-1, -1),
                methods, 2, wx.RA_SPECIFY_COLS
                )
        border.Add(self.rb, 0, wx.ALL, 20)
       
        sizeSizer = wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
        self.x = wx.TextCtrl(panel, -1, "")
        sizeSizer.Add(wx.StaticText(panel, -1, u"Колонки:"))
        sizeSizer.Add(self.x)
        self.y = wx.TextCtrl(panel, -1, "")
        sizeSizer.Add(wx.StaticText(panel, -1, u"Строки:"))
        sizeSizer.Add(self.y)
        resize = wx.Button(panel, 10, u"Изменить размер таблицы")
        sizeSizer.Add(resize)
        border.Add(sizeSizer, 0, wx.LEFT|wx.BOTTOM, 10)
       
        border1 = wx.BoxSizer(wx.VERTICAL)
        panel1 = wx.Panel(panel, style = wx.BORDER_RAISED | wx.VSCROLL | wx.HSCROLL )
        self.tb = table(panel1)
        border1.Add(self.tb)
        panel1.SetSizer(border1)
        panel1.SetSize((200,200))
       
        border.Add(panel1, 0, wx.LEFT|wx.BOTTOM, 10)
       
        panel.SetSizer(border)
       
       

#---------------------------------------------------------------------------

class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, u"Методы принятия решения")
        frame.Show(True)
        self.SetTopWindow(frame)
       
        self.keepGoing = True
        return True
       
app = MyApp(False)
app.MainLoop()
30K
07 марта 2008 года
ackii_3aya
16 / / 07.03.2008
Проблема решена есть класс wx.ScrolledWindow. чет я его пропустил =/
30K
07 марта 2008 года
ackii_3aya
16 / / 07.03.2008
Протупил дважды) таблица есть наследник этого СрокллВиндов =)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог