Как использовать ScrolledThumbnail в wxpython - PullRequest
0 голосов
/ 21 февраля 2012

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

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'

Ответы [ 2 ]

0 голосов
/ 21 апреля 2017

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

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

затем вызовите метод следующим образом:

self.tn.SetDropShadow=False
0 голосов
/ 22 февраля 2012

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

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

...