Уведомления

Группа в Telegram: @pythonsu

#1 Май 19, 2012 09:12:53

rustavel
От:
Зарегистрирован: 2011-02-24
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

wxPython splitter и grid не могу понять

всем доброго …
не получается нормально отобразить сетку в правом splitter'е
она уходит за границы окна, когда её размер больше видимого
мож я чет недопонимаю?
ток начал wxP пробовать…после тк

import wx
import wx.grid
class MainFrame(wx.Frame):
def __init__(self, parent=None, title=u"Window", size=wx.DefaultSize):
wx.Frame.__init__(self, parent=parent, title=title, size=size)

self.panel=wx.Panel(self)

self.splitter=wx.SplitterWindow(self.panel, style=wx.SP_3D|wx.SP_LIVE_UPDATE)

self.left_panel=wx.Panel(self.splitter, style=wx.SUNKEN_BORDER)
self.right_panel=wx.Panel(self.splitter, style=wx.SUNKEN_BORDER)

self.splitter.SplitVertically(self.left_panel, self.right_panel)

self.grid=wx.grid.Grid(self.right_panel)
self.grid.CreateGrid(80,80)

self.sizer_right=wx.BoxSizer(wx.VERTICAL)
self.sizer_right.Add(self.grid, 0, wx.EXPAND)
self.right_panel.SetSizer(self.sizer_right)

self.sizer_main=wx.BoxSizer(wx.VERTICAL)
self.sizer_main.Add(self.splitter, 0, wx.EXPAND)
self.panel.SetSizer(self.sizer_main)

self.Layout()
self.Fit()
self.SetSize(size)

class App(wx.App):
def __init__(self, redirect=False, filename=None):
wx.App.__init__(self, redirect=redirect, filename=filename)

def OnInit(self):
self.frame=MainFrame(size=(600, 450))
self.frame.Show()
self.SetTopWindow(self.frame)
return True

def OnExit(self):
print "Bay, Bay!!"

run=App()
run.MainLoop()



Офлайн

#2 Май 22, 2012 22:08:43

leonid_10
От:
Зарегистрирован: 2010-03-28
Сообщения: 197
Репутация: +  3  -
Профиль   Отправить e-mail  

wxPython splitter и grid не могу понять

Это глюк. Я не раз с этим сталкивался . Создаёшь окно шириной 1000, размещаешь на нём две панели по 500 - вторая не умещается. Проблема с сайзерами. Без них размещение с указанием точного положения виджетов ставит всё на место, но.. без сайзеров не работают некоторые функции виджетов, в том числе scroled и прочее. Глюкавый тулкит, нужно искать замену.



Офлайн

#3 Май 23, 2012 02:47:28

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

wxPython splitter и grid не могу понять

leonid_10
Создаёшь окно шириной 1000, размещаешь на нём две панели по 500 - вторая не умещается. … Глюкавый тулкит
А может просто непонимание того, что у окна есть границы и они тоже имеют размер.
rustavel
Попробуйте в строке:
self.sizer_right.Add(self.grid, 0, wx.EXPAND)
заменить 0 на 1. Проверить не могу - у меня третий питон.



Отредактировано pyuser (Май 23, 2012 02:49:03)

Офлайн

#4 Май 23, 2012 11:09:42

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

wxPython splitter и grid не могу понять

pyuser прав, плюс вы там лишний сайзер создаете

import wx
import wx.grid
class MainFrame(wx.Frame):
    def __init__(self, parent=None, title=u"Window", size=wx.DefaultSize):
        wx.Frame.__init__(self, parent=parent, title=title, size=size)
        self.splitter = wx.SplitterWindow(self, style=wx.SP_3D | wx.SP_LIVE_UPDATE)
        self.left_panel = wx.Panel(self.splitter, style=wx.SUNKEN_BORDER)
        self.right_panel = wx.Panel(self.splitter, style=wx.SUNKEN_BORDER)
        self.splitter.SplitVertically(self.left_panel, self.right_panel)
        self.grid = wx.grid.Grid(self.right_panel)
        self.grid.CreateGrid(80, 80)
        self.sizer_right = wx.BoxSizer(wx.VERTICAL)
        self.sizer_right.Add(self.grid, 1, wx.EXPAND)
        self.right_panel.SetSizer(self.sizer_right)
        self.Layout()
        self.Fit()
        self.SetSize(size)
class App(wx.App):
    def __init__(self,  redirect=False, filename=None):
        wx.App.__init__(self, redirect=redirect, filename=filename)
    def OnInit(self):
        self.frame = MainFrame(size=(600, 450))
        self.frame.Show()
        self.SetTopWindow(self.frame)
        return True
    def OnExit(self):
        print "Bay, Bay!!"
run = App()
run.MainLoop()
PS: что-то у меня в теге “code” пустые строки вырезаются :(



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано PooH (Май 23, 2012 11:14:02)

Офлайн

#5 Май 24, 2012 08:38:41

rustavel
От:
Зарегистрирован: 2011-02-24
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

wxPython splitter и grid не могу понять

спасибо)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version