Как я (быстро) уменьшаю 300 изображений с помощью PyQT4? - PullRequest
5 голосов
/ 04 января 2011

Я работаю (все еще) над приложением для переплета книг, и чтобы сделать его эстетически приятным, я добавил миниатюру на каждую перетаскиваемую страницу. Она работает просто отлично, но единственная проблема заключается в том, что при перетаскиванииво всей книге (т. е. 400 изображений) она замораживается полностью до тех пор, пока не будет сделано.

Вот мой простой код сброса:

  def fileDropped(self, file):
    f = str(file[-1])

    if os.path.splitext(f)[1][1:] != 'tif':
      reply = QtGui.QMessageBox.question(self, 'Message', 'All files must be TIF images. Would you like me to convert a copy of your file to the TIF format?', QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No)

      if reply == QtGui.QMessageBox.Yes:
        if not os.path.exists('./djvu_backup/'):  os.mkdir('./djvu_backup/')



        if f not in self.getChildren(self.ui.pageList):   # It's a custom method. It does what it looks like it does.
          icon = QtGui.QIcon(f)
          pixmap = icon.pixmap(72, 72)
          icon = QtGui.QIcon(pixmap)
          item = QtGui.QListWidgetItem(f, self.ui.pageList)
          item.setIcon(icon)
          item.setStatusTip(f)

        return True

Кроме того, просто в качестве сторонывопрос, как вы можете видеть в коде, f = str(file[-1]).Я должен выбирать последний элемент из моего массива удаленных файлов каждый раз, когда вызывается метод, так как он вызывается для каждого удаленного файла, даже если они удаляются все сразу.Есть ли причина / способ для этого?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 04 января 2011

Вы можете попытаться сделать миниатюру быстрее, но это только увеличит размер книги, которую вы могли бы уронить, прежде чем заметите проблему. Ответы: либо сделать миниатюру страницы только при ее отображении, либо перенести миниатюру в фоновый поток и обновить отображение по завершении каждого из них.

0 голосов
/ 23 августа 2011

Я знаю, что это действительно просто, но вы рассматривали возможность использования QProgressBar, чтобы пользователи могли видеть, что программа все еще обрабатывает, когда она кажется замороженной?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...