2012-02-21 3 views
0

Вот мой код, однако он не работает. Нет никаких примеров этого виджета, который доступен в Интернете. Следующий код возвращает ошибку. Я не слишком уверен в том, как использовать виджет ScrolledThumbnail, я надеюсь, что кто-то может показать мне и рассказать мне, что я делаю неправильно.Как использовать ScrolledThumbnail в wxpython

import wx 
from wx.lib.agw import thumbnailctrl as tn 

class MyFrame(wx.Frame): 
    def __init__(self, *args, **kwds): 
     wx.Frame.__init__(self, *args, style=wx.DEFAULT_FRAME_STYLE) 
     self.button = wx.Button(self, -1, "Select dir") 
     self.Bind(wx.EVT_BUTTON, self.ButtonPress, self.button) 
     self.tn = tn.ScrolledThumbnail(self) 
     self.tn.Bind(tn.EVT_THUMBNAILS_DCLICK, self.TnClick) 

     box = wx.BoxSizer(wx.VERTICAL) 
     box.Add(self.tn, 1, wx.EXPAND, 0) 
     box.Add(self.button, 0, wx.ADJUST_MINSIZE, 0) 
     self.SetSizer(box) 
     box.Fit(self) 
     self.Layout() 

    def ButtonPress(self, evt): 
     dlg = wx.DirDialog(self, 'Get dir') 
     if dlg.ShowModal() == wx.ID_OK: 
      path = dlg.GetPath() 
     dlg.Destroy() 
     self.tn.ShowDir(path) 

    def TnClick(self, evt): 
     sel = self.tn.GetSelection() 
     wx.MessageBox(self.tn.GetThumbInfo(sel)) 

if __name__ == "__main__": 
    app = wx.PySimpleApp(0) 
    frame = MyFrame(None, -1, "") 
    frame.Show() 
    app.MainLoop() 

EDIT:

здесь ошибка

self.tn.ShowDir(path) 
    File "C:\Python29\lib\site-packages\wx-2.9.3-msw\wx\lib\agw\thumbnailctrl.py", line 1574, in ShowDir 
    self._parent.RecreateComboBox(folder) 
AttributeError: 'MyFrame' object has no attribute 'RecreateComboBox' 
+0

Было бы более информативным, если вы предоставили текст ошибки, так как этот код работает на меня. –

+0

Вы пытались сменить каталоги – thelost

+0

Хорошо, я вижу. 'ScrolledThumbnail' не предназначен для использования сам по себе, только в классе' ThumbnailCtrl'. Почему вы хотите использовать его так? –

ответ

0

Я рекомендовал бы смотреть, как демонстрационная делает это, а затем с помощью следующей вики-страницу, чтобы вытащить демо-код в свой собственный: http://wiki.wxpython.org/Using%20wxPython%20Demo%20Code

В примере, который вы предоставляете, никогда не называет «RecreateComboBox». Однако из сообщения об ошибке кажется, что у вас просто нет этого метода. Если вы его определите, эта ошибка не произойдет.

0

Методы ScrolledThumbnail наследуются в конечном экземпляре эскиза. Таким образом, вы могли бы использовать всю эту методу путем создания такого экземпляра:

self.tn = tn.ThumbnailCtrl(panel, size = (500,500)) 

затем вызвать метод как это:

self.tn.SetDropShadow=False