PictureFlow

PictureFlow to widżet pozwalający na dość poręczny i efektowny sposób przeglądania zdjęć. Kod znajdujący się w repozytorium posiada API dla PyQt4. Wystarczy pobrać kod źródłowy (archiwum tar.gz):
svn export http://pictureflow.googlecode.com/svn/trunk/ pictureflow
Kompilacja i instalacja wygląda następująco:
  • Wchodzimy do katalogu pictureflow-qt i wykonujemy polecenia: qmake, make i make install
  • Przechodzimy do katalogu pyqt i wykonujemy polecenia: python configure.py, make, make install
Po zainstalowaniu modułu można go przetestować. Oto przykładowy skrypt:
import sys
from os import listdir

from PyQt4.QtCore import *
from PyQt4.QtGui import *
from pictureflow import *

app = QApplication(sys.argv)

w = PictureFlow()

images = listdir('/ścieżka/do/katalogu/z/grafikami/')
for i in images:
	if i.endswith('jpg'):
		w.addSlide(QPixmap('/ścieżka/do/katalogu/z/grafikami/%s' % i))
w.show()

sys.exit(app.exec_())
Oto przykładowy efekt:
pictureflow

Klasa PictureFlow

Poniżej definicja SIP klasy PictureFlow
public:

  enum ReflectionEffect
  {
    NoReflection,
    PlainReflection,
    BlurredReflection
  };

  PictureFlow(QWidget *parent /TransferThis/ = 0);
  ~PictureFlow();
  QColor backgroundColor() const;
  void setBackgroundColor(const QColor& c);
  QSize slideSize() const;
  void setSlideSize(QSize size);
  int slideCount() const;
  QImage slide(int index) const;
  int centerIndex() const;
  ReflectionEffect reflectionEffect() const;
  void setReflectionEffect(ReflectionEffect effect);

public slots:
  void addSlide(const QImage& image);
  void addSlide(const QPixmap& pixmap);
  void setSlide(int index, const QImage& image);
  void setSlide(int index, const QPixmap& pixmap);
  void setCenterIndex(int index);
  void clear();
  void showPrevious();
  void showNext();
  void showSlide(int index);
  void render();
  void triggerRender();

signals:
  void centerIndexChanged(int index);

protected:
  void paintEvent(QPaintEvent *event);
  void keyPressEvent(QKeyEvent* event);
  void mousePressEvent(QMouseEvent* event);
  void resizeEvent(QResizeEvent* event);
RkBlog

PyQt, 1 January 2009

Comment article
Comment article RkBlog main page Search RSS Contact