2017-05-16 3 views
0

멀티 스플리터 아래에 두 개의 Thubmnailctrl을 삽입하려고했으나 그 안에 넣을 수 있었지만 전체 공간을 충분히 차지하지 못했습니다. thumbnailctrl.py에 나는 그것이 될 수있는 최대 크기에 그것을 본 적이 것은 350x280입니다 :Thumbnailctrl 크기 (전체 화면으로 가져 오려고 시도)

def SetThumbSize(self, width, height, border=6): 
""" 
Sets the thumbnail size as width, height and border. 

:param `width`: the desired thumbnail width; 
:param `height`: the desired thumbnail height; 
:param `border`: the spacing between thumbnails. 
""" 

if width > 350 or height > 280: 
    return 

self._tWidth = width 
self._tHeight = height 
self._tBorder = border 
self.SetScrollRate((self._tWidth + self._tBorder)/4, 
        (self._tHeight + self._tBorder)/4) 
self.SetSizeHints(self._tWidth + self._tBorder*2 + 16, 
        self._tHeight + self._tBorder*2 + 8) 

그러나 ThumbnailCtrl에서 데모에 다른 한편으로는, 당신과 같은 큰로서 Thumbnailctrl을 만들 수있는 분배기를 사용하여 원하는, 그래서 내가 뭔가 잘못 (어쩌면 Sizers) 또는 Splitter (완전히 멀티 스플리터보다) Thumbnailctrl 그것의 전체 공간을 차지할 수있는 몇 가지 기능을하는지 모르겠다.

Thumbnailctrl + 분배기 데모 : 두 개의 작은 이미지와 Multisplitter에서

import wx 
import os 
import sys 

try: 
    dirName = os.path.dirname(os.path.abspath(__file__)) 
except: 
    dirName = os.path.dirname(os.path.abspath(sys.argv[0])) 

sys.path.append(os.path.split(dirName)[0]) 

try: 
    from agw import thumbnailctrl as TC 
except ImportError: # if it's not there locally, try the wxPython lib. 
import wx.lib.agw.thumbnailctrl as TC 


class MainFrame(wx.Frame): 
def __init__(self, redirect=False, filename=None): 
    wx.Frame.__init__(self, None, title="Elephant") 

    # self.SetMenuBar(self.CreateMenuBar()) 

    splitter = wx.SplitterWindow(self, -1, style=wx.CLIP_CHILDREN | wx.SP_3D | wx.WANTS_CHARS | wx.SP_LIVE_UPDATE) 
    self.panel = wx.Panel(splitter, -1) 

    sizer = wx.BoxSizer(wx.HORIZONTAL) 
    scroll = TC.ThumbnailCtrl(splitter, -1, imagehandler=TC.NativeImageHandler) 

    scroll.ShowFileNames() 
    if os.path.isdir("../bitmaps"): 
     scroll.ShowDir(os.path.normpath(os.getcwd() + "/../bitmaps")) 
    else: 
     scroll.ShowDir(os.getcwd()) 

    self.TC = scroll 

    splitter.SplitVertically(scroll, self.panel, 180) 

    splitter.SetMinimumPaneSize(140) 
    self.SetMinSize((700, 590)) 
    self.CenterOnScreen() 

if __name__ == "__main__": 
    app = wx.App(False) 
    frame = MainFrame() 
    # import wx.lib.inspection 
    # wx.lib.inspection.InspectionTool().Show() 
    app.MainLoop() 

내 시도 (그리고 그 텍스트와 물건 세 번째 패널 작동시) :

import wx 
import os 
import cv2 
import ctypes 
from PIL import Image 
from wx.lib.splitter import MultiSplitterWindow 

try: 
    from agw import thumbnailctrl as TC 
except ImportError: # if it's not there locally, try the wxPython lib. 
    import wx.lib.agw.thumbnailctrl as TC 


class SamplePane(wx.Panel): 
def __init__(self, parent): 
    wx.Panel.__init__(self, parent) 

    self.thumbnail11 = TC.ThumbnailCtrl(self, imagehandler=TC.NativeImageHandler, thumboutline=4) 
    self.thumbnail11.EnableDragging(True) 
    # self.thumbnail11.SetThumbSize(350, screensize[0]/15, 25) # For images -> Max values 350,280 

    # ################VID################ # 

    topmostSizer = wx.BoxSizer(wx.VERTICAL) 

    topmostSizer.Add(self.thumbnail11, proportion=0, flag=wx.EXPAND) 

    self.SetSizer(topmostSizer) 
    self.MaxSize 
    # topmostSizer.Fit(self) 


class MainFrame(wx.Frame): 
"""""" 

    def __init__(self): 
     """Constructor""" 
     wx.Frame.__init__(self, None, title="Elephant") 

     splitter = MultiSplitterWindow(self, style=wx.SP_LIVE_UPDATE) 
     # t1Sizer = wx.BoxSizer(wx.VERTICAL) 
     # self.thumbnail11 = TC.ThumbnailCtrl(splitter, imagehandler=TC.NativeImageHandler, thumboutline=4) 
     panel = SamplePane(splitter) 
     splitter.AppendWindow(panel) 
     panel2 = SamplePane(splitter) 
     splitter.AppendWindow(panel2) 
     # t1Sizer.Add(panel, proportion=0, flag=wx.EXPAND) 
     self.Show() 

if __name__ == "__main__": 
    app = wx.App(False) 

    frame = MainFrame() 
    # import wx.lib.inspection 
    # wx.lib.inspection.InspectionTool().Show() 
    app.MainLoop() 

당신이 볼 수 있듯이 두 개의 미리보기 이미지이며 왼쪽에서 오른쪽으로 확장되지만 최대 높이로 제한됩니다.

도움을 주셔서 감사합니다.

답변

1

100 % 확신하지 못하는 이유는이 문제로 달성하려는 것이지만 topmostSizerproportion 속성에 문제가있는 것으로 의심됩니다.
시도 : 수동에서

topmostSizer.Add(self.thumbnail11, proportion=1, flag=wx.EXPAND) 

:

비율 -이 매개 변수의 의미가 wx.Sizer에 정의되어 있지 않지만,이 아이의 경우 표시하기 위해 wx.BoxSizer에 사용됩니다 크기계 은 wx.BoxSizer의 주 방향에서 크기를 변경할 수 있습니다. 여기서 0은 변경 가능하지 않으며 0보다 큰 값은 이 다른 개 하위의 값에 대한 상대 (전체의 비율)로 해석됩니다. 같은 wx.Box Sizer.

이 경우

, 당신은 VERTICAL

topmostSizer을 정의
관련 문제