Форум сайта python.su
всем доброго …
не получается нормально отобразить сетку в правом 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()
Офлайн
Это глюк. Я не раз с этим сталкивался . Создаёшь окно шириной 1000, размещаешь на нём две панели по 500 - вторая не умещается. Проблема с сайзерами. Без них размещение с указанием точного положения виджетов ставит всё на место, но.. без сайзеров не работают некоторые функции виджетов, в том числе scroled и прочее. Глюкавый тулкит, нужно искать замену.
Офлайн
leonid_10А может просто непонимание того, что у окна есть границы и они тоже имеют размер.
Создаёшь окно шириной 1000, размещаешь на нём две панели по 500 - вторая не умещается. … Глюкавый тулкит
self.sizer_right.Add(self.grid, 0, wx.EXPAND)
Отредактировано pyuser (Май 23, 2012 02:49:03)
Офлайн
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()
Отредактировано PooH (Май 23, 2012 11:14:02)
Офлайн
спасибо)
…
Офлайн