2010-08-27 48 views
3

我想添加分層結構動態捕捉的圖像(一個接一個)。我想將它們添加到wx.ScrolledPanel如何添加項目到wx.ScrolledPanel?

ScrolledPanel定義 - 更新

self.hbox = wx.BoxSizer(wx.HORIZONTAL) 
    #self.sizer.Add(self.hbox) 
    self.scroll = scrolled.ScrolledPanel(self, id = -1, pos = wx.DefaultPosition, size = (500, 400), style= wx.SUNKEN_BORDER , name = "Scroll") 
    self.scroll.SetupScrolling(10,10,10,10) 
    #self.scroll.SetSizer(self.hbox) 
    self.sizer.Add(self.scroll)  


    #add to scroll 
    images = wx.StaticBitmap(self, id=-1, pos=wx.DefaultPosition, 
          size=(200,150), 
          style= wx.SUNKEN_BORDER) 
    images.SetBitmap(bmp) 
    self.hbox.Add(images, 1, wx.BOTTOM | wx.EXPAND | wx.ALL, 3) 
    self.scroll.SetSizer(self.hbox) 
    self.scroll.SetAutoLayout(1) 
    self.scroll.SetupScrolling() 
    self.SetSizerAndFit(self.sizer) 
    self.Refresh() 
    self.Layout() 
  • 的Python 2.6,窗32bit的

更新後 - 我看到scrollpanel,我添加圖像分級機。但sizer不顯示在scrollPanel中。

回答

1

這是一個粗糙但可運行的例子,你想要什麼,它有一個小故障,它認爲我還沒有找出原因呢! (你只需把一個縮略圖大小的JPG名爲「image.jpg的」在同一目錄中的腳本)

import wx 
import wx.lib.scrolledpanel as scrolled 

class ImageDlg(wx.Dialog): 
    def __init__(self, parent, title): 
     wx.Dialog.__init__(self, parent=parent,title=title, size=wx.DefaultSize) 

     self.scrollPnl = scrolled.ScrolledPanel(self, -1, size=(200, 200), style = wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER) 

     self.addBtn = wx.Button(self, id=wx.ID_ADD) 
     self.Bind(wx.EVT_BUTTON, self.on_add, self.addBtn) 

     self.mainSizer = wx.BoxSizer(wx.VERTICAL)  

     self.scrollPnlSizer = wx.BoxSizer(wx.VERTICAL)  
     img = wx.Image("image.jpg", wx.BITMAP_TYPE_ANY) 
     staticBitmap = wx.StaticBitmap(self.scrollPnl, wx.ID_ANY, wx.BitmapFromImage(img)) 
     self.scrollPnlSizer.Add(staticBitmap, 1, wx.EXPAND | wx.ALL, 3) 

     self.mainSizer.Add(self.addBtn) 
     self.mainSizer.Add(self.scrollPnl) 

     self.SetSizerAndFit(self.mainSizer) 


    def on_add(self, event): 
     img = wx.Image("image.jpg", wx.BITMAP_TYPE_ANY) 
     staticBitmap = wx.StaticBitmap(self.scrollPnl, wx.ID_ANY, wx.BitmapFromImage(img)) 
     self.scrollPnlSizer.Add(staticBitmap, 1, wx.EXPAND | wx.ALL, 3) 
     self.scrollPnl.SetSizer(self.scrollPnlSizer) 
     self.scrollPnl.SetAutoLayout(1) 
     self.scrollPnl.SetupScrolling() 

     self.Refresh() 
     self.Layout() 

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

     openDlg_btn = wx.Button(self, label="Open Dialog") 
     self.Bind(wx.EVT_BUTTON, self.onBtn) 

     mainSizer = wx.BoxSizer(wx.HORIZONTAL) 
     mainSizer.Add(openDlg_btn, 0, wx.ALL, 10) 
     self.SetSizerAndFit(mainSizer) 
     self.Centre() 

    def onBtn(self, event): 
     dlg = ImageDlg(self, title='Image Dialog') 
     dlg.SetSize((300,300)) 

     dlg.CenterOnScreen() 
     dlg.ShowModal() 
     dlg.Destroy() 


class TestFrame(wx.Frame):  
    def __init__(self, parent): 
     wx.Frame.__init__(self, parent) 
     TestPanel(self) 


if __name__ == "__main__": 

    app = wx.PySimpleApp() 
    frame = TestFrame(None) 
    frame.Show() 
    app.MainLoop() 
+0

但我想添加圖片滾動面板,因爲如果我將它們添加到self.sizer - 我的窗口越來越大 – CarolusPl 2010-08-27 11:29:56

+0

我做到了。在第六行添加(self.hbox),但它的工作不正確。我的sizer正在變大,但現在我看到滾動(圖像被添加到sizer和滾動面板?) – CarolusPl 2010-08-27 12:01:41

+0

對不起,我的錯誤,如果你提供了一個可運行的問題的例子,它會更容易找出什麼是錯的,因爲我無法看到任何東西你有什麼錯,我有類似的代碼,工程...在你的代碼中的其他東西可能會影響... – volting 2010-08-27 12:05:38