Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from PySide.QtCore import QTimeLine
- from PySide.QtGui import *
- class PageA( QWidget ):
- def __init__( self ):
- super( PageA, self ).__init__()
- self.setLayout( QVBoxLayout() )
- self.btn = QPushButton( 'Calendar Page')
- self.layout().addWidget(QCalendarWidget())
- self.layout().addWidget( self.btn )
- class PageB( QWidget ):
- def __init__( self ):
- super( PageB, self ).__init__()
- self.setLayout( QVBoxLayout() )
- editor = QTextEdit()
- editor.setPlainText("Hello world! "*100)
- self.btn = QPushButton( 'Text Page')
- self.layout().addWidget( editor )
- self.layout().addWidget( self.btn )
- class FaderWidget( QWidget ):
- def __init__(self, old_widget, new_widget):
- QWidget.__init__( self, new_widget )
- self.old_pixmap = QPixmap( new_widget.size() )
- old_widget.render( self.old_pixmap )
- self.pixmap_opacity = 1.0
- self.timeline = QTimeLine()
- self.timeline.valueChanged.connect( self.animate )
- self.timeline.finished.connect( self.close )
- self.timeline.setDuration( 800 )
- self.timeline.start()
- self.resize( new_widget.size() )
- self.show()
- def paintEvent(self, event):
- painter = QPainter()
- painter.begin( self )
- painter.setOpacity( self.pixmap_opacity )
- painter.drawPixmap( 0, 0, self.old_pixmap )
- painter.end()
- def animate(self, value):
- print value
- self.pixmap_opacity = 1.0 - value
- self.repaint()
- class StackedWidget(QStackedWidget):
- def __init__(self, parent = None):
- QStackedWidget.__init__(self, parent)
- def setCurrentIndex(self, index):
- self.fader_widget = FaderWidget(self.currentWidget(), self.widget(index))
- QStackedWidget.setCurrentIndex(self, index)
- def setPage1(self):
- self.setCurrentIndex(0)
- def setPage2(self):
- self.setCurrentIndex(1)
- if __name__ == "__main__":
- app = QApplication(sys.argv)
- window = QWidget()
- stack = StackedWidget()
- pageA = PageA()
- pageB = PageB()
- stack.addWidget( pageA )
- stack.addWidget( pageB )
- #stack.addWidget(QCalendarWidget())
- #editor = QTextEdit()
- #editor.setPlainText("Hello world! "*100)
- page1Button = QPushButton("Page 1")
- page2Button = QPushButton("Page 2")
- # THOSE BUTTONS WORK:
- page1Button.clicked.connect( stack.setPage1 )
- page2Button.clicked.connect( stack.setPage2 )
- # THOSE DON'T:
- pageA.btn.clicked.connect( stack.setPage1 )
- pageB.btn.clicked.connect( stack.setPage2 )
- layout = QGridLayout(window)
- layout.addWidget(stack, 0, 0, 1, 2)
- layout.addWidget(page1Button, 1, 0)
- layout.addWidget(page2Button, 1, 1)
- window.show()
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement