Advertisement
Guest User

Untitled

a guest
May 10th, 2012
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.80 KB | None | 0 0
  1. from functools import partial
  2. import sys
  3. from PySide.QtGui import *
  4. from PySide.QtCore import *
  5.  
  6. # SHOULD MAKE THIS A SUB CLASS OF QStackedWidget TO SIMPLIFY MAIN CODE
  7.  
  8. class FaderWidget( QStackedWidget ):
  9.     '''Cross fade between two widgets'''
  10.     def __init__( self, parent=None ):
  11.         super( FaderWidget, self ).__init__( parent )
  12.         self.pixmapOpacity = 1.0
  13.        
  14.         self.timeLine = QTimeLine()
  15.         self.timeLine.valueChanged.connect( self.animate )
  16.         self.timeLine.finished.connect( self.close )
  17.         self.timeLine.setDuration( 700 )      
  18.    
  19.     def paintEvent( self, event ):
  20.         painter = QPainter()
  21.         painter.begin( self )
  22.         painter.setOpacity( self.pixmapOpacity )
  23.         painter.drawPixmap( 0,0, self.oldPixmap )
  24.         painter.end()
  25.        
  26.     def animate( self, value ):
  27.         print value
  28.         self.pixmapOpacity = 1.0 - value
  29.         self.repaint()
  30.  
  31.     def setCurrentIndex( self, index ):
  32.         oldWidget = self.currentWidget()
  33.         newWidget = self.widget( index )
  34.        
  35.         QWidget.__init__( self, newWidget )
  36.         self.resize( newWidget.size() )
  37.        
  38.         self.oldPixmap = QPixmap( newWidget.size() )
  39.         oldWidget.render( self.oldPixmap )
  40.  
  41.         self.timeLine.start()
  42.         QStackedWidget.setCurrentIndex( self, index )
  43.  
  44.  
  45. if __name__ == '__main__':
  46.  
  47.     app = QApplication( sys.argv )
  48.    
  49.  
  50.     widget1 = QPushButton( 'test' )
  51.     widget2 = QCalendarWidget()
  52.     w = FaderWidget()
  53.     w.addWidget( widget1 )
  54.     w.addWidget( widget2 )
  55.    
  56.     def changePage( faderWidget, index ):
  57.         faderWidget.setCurrentIndex( index )
  58.     changePageCallback = partial( changePage, w, 1 )
  59.     widget1.clicked.connect( changePageCallback )
  60.  
  61.  
  62.     w.show()
  63.     sys.exit( app.exec_() )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement