Advertisement
Guest User

Untitled

a guest
Apr 16th, 2012
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.92 KB | None | 0 0
  1. import sys
  2. from PySide.QtCore import QTimeLine
  3. from PySide.QtGui import *
  4.  
  5. class PageA( QWidget ):
  6.     def __init__( self ):
  7.         super( PageA, self ).__init__()
  8.         self.setLayout( QVBoxLayout() )
  9.         self.btn = QPushButton( 'Calendar Page')
  10.         self.layout().addWidget(QCalendarWidget())        
  11.         self.layout().addWidget( self.btn )
  12.  
  13. class PageB( QWidget ):
  14.     def __init__( self ):
  15.         super( PageB, self ).__init__()
  16.         self.setLayout( QVBoxLayout() )
  17.         editor = QTextEdit()
  18.         editor.setPlainText("Hello world! "*100)
  19.         self.btn = QPushButton( 'Text Page')
  20.         self.layout().addWidget( editor )
  21.         self.layout().addWidget( self.btn )
  22.  
  23. class FaderWidget( QWidget ):
  24.  
  25.     def __init__(self, old_widget, new_widget):
  26.    
  27.         QWidget.__init__( self, new_widget )
  28.         self.old_pixmap = QPixmap( new_widget.size() )
  29.         old_widget.render( self.old_pixmap )
  30.         self.pixmap_opacity = 1.0
  31.  
  32.         self.timeline = QTimeLine()
  33.         self.timeline.valueChanged.connect( self.animate )
  34.         self.timeline.finished.connect( self.close )
  35.         self.timeline.setDuration( 800 )
  36.         self.timeline.start()
  37.        
  38.         self.resize( new_widget.size() )
  39.         self.show()
  40.    
  41.     def paintEvent(self, event):
  42.    
  43.         painter = QPainter()
  44.         painter.begin( self )
  45.         painter.setOpacity( self.pixmap_opacity )
  46.         painter.drawPixmap( 0, 0, self.old_pixmap )
  47.         painter.end()
  48.    
  49.     def animate(self, value):
  50.         print value
  51.         self.pixmap_opacity = 1.0 - value
  52.         self.repaint()
  53.  
  54. class StackedWidget(QStackedWidget):
  55.  
  56.     def __init__(self, parent = None):
  57.         QStackedWidget.__init__(self, parent)
  58.    
  59.     def setCurrentIndex(self, index):
  60.         self.fader_widget = FaderWidget(self.currentWidget(), self.widget(index))
  61.         QStackedWidget.setCurrentIndex(self, index)
  62.    
  63.     def setPage1(self):
  64.         self.setCurrentIndex(0)
  65.    
  66.     def setPage2(self):
  67.         self.setCurrentIndex(1)
  68.  
  69.  
  70. if __name__ == "__main__":
  71.  
  72.     app = QApplication(sys.argv)
  73.    
  74.     window = QWidget()
  75.    
  76.     stack = StackedWidget()
  77.     pageA = PageA()
  78.     pageB = PageB()
  79.     stack.addWidget( pageA )
  80.     stack.addWidget( pageB )
  81.     #stack.addWidget(QCalendarWidget())
  82.     #editor = QTextEdit()
  83.     #editor.setPlainText("Hello world! "*100)
  84.    
  85.     page1Button = QPushButton("Page 1")
  86.     page2Button = QPushButton("Page 2")
  87.    
  88.     # THOSE BUTTONS WORK:
  89.     page1Button.clicked.connect( stack.setPage1 )
  90.     page2Button.clicked.connect( stack.setPage2 )
  91.     # THOSE DON'T:
  92.     pageA.btn.clicked.connect( stack.setPage1 )
  93.     pageB.btn.clicked.connect( stack.setPage2 )
  94.  
  95.  
  96.     layout = QGridLayout(window)
  97.     layout.addWidget(stack, 0, 0, 1, 2)
  98.     layout.addWidget(page1Button, 1, 0)
  99.     layout.addWidget(page2Button, 1, 1)
  100.    
  101.     window.show()
  102.    
  103.     sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement