from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QStackedWidget, QLabel, QSizePolicy, QSpacerItem, QFrame
from PyQt5.QtCore import Qt, QPropertyAnimation, QRect
class MyMainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.stacked_widget = QStackedWidget()
self.page1 = QWidget()
self.page2 = QWidget()
self.setup_ui()
def setup_ui(self):
# page 1
label1 = QLabel("Page 1")
label1.setAlignment(Qt.AlignCenter)
label1.setStyleSheet("font-size: 30px;")
label1.setFixedSize(400, 300)
page1_layout = QVBoxLayout()
page1_layout.addWidget(label1)
page1_layout.addSpacerItem(QSpacerItem(0, 40, QSizePolicy.Minimum, QSizePolicy.Expanding))
button = QPushButton("Go to Page 2")
button.setStyleSheet("font-size: 20px;")
button.clicked.connect(self.animate)
page1_layout.addWidget(button)
page1_layout.addSpacerItem(QSpacerItem(0, 40, QSizePolicy.Minimum, QSizePolicy.Expanding))
page1_layout.setAlignment(Qt.AlignCenter)
self.page1.setLayout(page1_layout)
# page 2
label2 = QLabel("Page 2")
label2.setAlignment(Qt.AlignCenter)
label2.setStyleSheet("font-size: 30px;")
label2.setFixedSize(400, 300)
page2_layout = QVBoxLayout()
page2_layout.addWidget(label2)
page2_layout.addSpacerItem(QSpacerItem(0, 40, QSizePolicy.Minimum, QSizePolicy.Expanding))
button = QPushButton("Go to Page 1")
button.setStyleSheet("font-size: 20px;")
button.clicked.connect(self.animate)
page2_layout.addWidget(button)
page2_layout.addSpacerItem(QSpacerItem(0, 40, QSizePolicy.Minimum, QSizePolicy.Expanding))
page2_layout.setAlignment(Qt.AlignCenter)
self.page2.setLayout(page2_layout)
# stacked widget
self.stacked_widget.addWidget(self.page1)
self.stacked_widget.addWidget(self.page2)
self.setCentralWidget(self.stacked_widget)
self.setGeometry(100, 100, 400, 300)
self.setWindowTitle("Stacked Widget Animation")
self.show()
def animate(self):
if self.stacked_widget.currentIndex() == 0:
self.anim = QPropertyAnimation(self.stacked_widget, b"geometry")
self.anim.setDuration(150)
self.anim.setStartValue(self.stacked_widget.geometry())
self.anim.setEndValue(self.stacked_widget.geometry().translated(-400, 0))
self.anim.finished.connect(self.change_page)
self.anim.start()
elif self.stacked_widget.currentIndex() == 1:
self.anim = QPropertyAnimation(self.stacked_widget, b"geometry")
self.anim.setDuration(150)
self.anim.setStartValue(self.stacked_widget.geometry())
self.anim.setEndValue(self.stacked_widget.geometry().translated(400, 0))
self.anim.finished.connect(self.change_page)
self.anim.start()
def change_page(self):
index = self.stacked_widget.currentIndex()
if index == 0:
self.stacked_widget.setCurrentIndex(1)
else:
self.stacked_widget.setCurrentIndex(0)
app= QApplication([])
win = MyMainWindow()
app.exec_()
Bunu deniyorum da bu önce gri sayfaya geçiyor sonra benim sayfama geçiyor gibi duruyor ben öyle durmasın istiyorum nasıl yaparım