Найти - Пользователи
Полная версия: wxPython splitter и grid не могу понять
Начало » GUI » wxPython splitter и grid не могу понять
1
rustavel
всем доброго …
не получается нормально отобразить сетку в правом 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()
leonid_10
Это глюк. Я не раз с этим сталкивался . Создаёшь окно шириной 1000, размещаешь на нём две панели по 500 - вторая не умещается. Проблема с сайзерами. Без них размещение с указанием точного положения виджетов ставит всё на место, но.. без сайзеров не работают некоторые функции виджетов, в том числе scroled и прочее. Глюкавый тулкит, нужно искать замену.
pyuser
leonid_10
Создаёшь окно шириной 1000, размещаешь на нём две панели по 500 - вторая не умещается. … Глюкавый тулкит
А может просто непонимание того, что у окна есть границы и они тоже имеют размер.
rustavel
Попробуйте в строке:
self.sizer_right.Add(self.grid, 0, wx.EXPAND)
заменить 0 на 1. Проверить не могу - у меня третий питон.
PooH
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” пустые строки вырезаются :(
rustavel
спасибо)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB