QStackedWidgetشرح ال

 QStackedWidget

 provides a stack of widgets where only one widget is visible at a time

تدعم تراكم النوافذ بحيث نافذة واحدة تظهر في نفس الوقت

Create object:

           Stack = QStackedWidget(self) 

Function:

 

addWidget()            

QStackedWidgetتضيف واجهة لل

setLayout()

QStackedWidgetتضيف حاوية ومكونات لواجهات ال

count()

QStackedWidgetترجع عدد النوافذ اللي علي ال

currentIndex()

بتاع الشاشة اللي ظاهرة حالياindex ترجع ال

indexOf(self.stack2)

  بتاع الشاشة اللي ممرة ليهindexترجع ال

setCurrentIndex(int)

 

بتاعهاindexتحدد الشاشة اللي هتظهر(الحالية) بمعلومية ال

setCurrentWidget((

بتاعهاobjectتحدد الشاشة اللي هتظهر(الحالية)بتمرير ال

insertWidget(indx,wid)

Inserts the given widget at the given index in the QStackedWidget.

removeWidget(widget)

Removes widget from the QStackedWidget.

 

Slots:

 

currentChanged(int index)

This signal is emitted whenever the current widget changes.

widgetRemoved(int index)

 

This signal is emitted whenever a widget is removed.

 

EX:

 

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

class StackedExample(QWidget):
    def __init__(self):
        super(StackedExample, self).__init__()
        # اضبط الموضع الأولي وحجم النافذة
        self.setGeometry(300, 50, 10, 10)
        self.setWindowTitle('مثال على StackedWidget')

        # إنشاء نافذة قائمة ، إضافة إدخالات
        self.leftlist = QListWidget()
        self.leftlist.insertItem(0, 'معلومات الاتصال')
        self.leftlist.insertItem(1, 'معلومات شخصية')
        self.leftlist.insertItem(2, 'مستوى التعليم')

        # إنشاء ثلاثة عناصر تحكم صغيرة
        self.stack1 = QWidget()
        self.stack2 = QWidget()
        self.stack3 = QWidget()

        self.stack1UI()
        self.stack2UI()
        self.stack3UI()

        # Three عناصر تحكم الطفل في كائن QStackedWidget
        self.stack = QStackedWidget(self)

        self.stack.addWidget(self.stack1)
        self.stack.addWidget(self.stack2)
        self.stack.addWidget(self.stack3)

        # تخطيط أفقي ، أضف أجزاء إلى التخطيط
        HBox = QHBoxLayout()
        HBox.addWidget(self.leftlist)
        HBox.addWidget(self.stack)

        self.setLayout(HBox)

        self.leftlist.currentRowChanged.connect(self.display)

    def stack1UI(self):
        layout = QFormLayout()
        layout.addRow('اسم', QLineEdit())
        layout.addRow('عنوان', QLineEdit())
        self.stack1.setLayout(layout)

    def stack2UI(self):
        # تخطيط شكل zhu ، تخطيط شبه أفقي
        layout = QFormLayout()
        sex = QHBoxLayout()

        # أضف أزرار الاختيار في التخطيط الأفقي
        sex.addWidget(QRadioButton('الذكر'))
        sex.addWidget(QRadioButton('أنثى'))

        # إضافة ضوابط لتخطيط النموذج
        layout.addRow(QLabel('جنس'), sex)
        layout.addRow('عيد الميلاد', QLineEdit())

        self.stack2.setLayout(layout)

    def stack3UI(self):
        # تخطيط أفقي
        layout = QHBoxLayout()

        # إضافة عناصر تحكم إلى التخطيط
        layout.addWidget(QLabel('موضوع'))
        layout.addWidget(QCheckBox('جسدي - بدني'))
        layout.addWidget(QCheckBox('عدد كبير'))

        self.stack3.setLayout(layout)

    def display(self, index):
        # اضبط فهرس علامة التبويب المرئية حاليًا
        self.stack.setCurrentIndex(index)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = StackedExample()
    demo.show()
    sys.exit(app.exec_())

 

 

 

EX:

from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import sys

class window(QDialog):
    def __init__(self):
        super(window ,self).__init__()
        self.lay = QVBoxLayout()
        self.setLayout(self.lay)
        self.lbl = QLabel()
        self.l1 = QLineEdit()
        self.l2 = QLineEdit()
        self.btn1 = QPushButton()
        self.btn2 = QPushButton()
        self.show()

class stackWidget(QStackedWidget):
    def __init__(self):
        super(stackWidget, self).__init__()
        self.resize(300,100)
        # first stack
        self.first()
        self.second()
        self.third()

    def first(self):
        stack_1 = window()
        stack_1.setLayout(stack_1.lay)
        stack_1.lbl.setText("Welcome Screen")
        stack_1.btn1.setText("Log In")
        stack_1.btn2.setText("Sign Up")
        stack_1.lay.addWidget(stack_1.lbl)
        stack_1.lay.addWidget(stack_1.btn1)
        stack_1.lay.addWidget(stack_1.btn2)
        self.addWidget(stack_1)
        stack_1.btn1.clicked.connect(self.disply1)
        stack_1.btn2.clicked.connect(self.disply2)
    def second(self):
        stack_2 = window()
        stack_2.setLayout(stack_2.lay)
        stack_2.lbl.setText("Log In")
        # stack_1.lbl.move(220, 150)
        stack_2.lay.addWidget(stack_2.lbl)
        stack_2.l1.setPlaceholderText("User Name")
        stack_2.lay.addWidget(stack_2.l1)
        stack_2.l2.setPlaceholderText("PassWord")
        stack_2.lay.addWidget(stack_2.l2)
        self.addWidget(stack_2)
    def third(self):
        stack_3 = window()
        stack_3.setLayout(stack_3.lay)
        stack_3.lbl.setText("Sign Up")
        stack_3.lay.addWidget(stack_3.lbl)
        stack_3.l1.setPlaceholderText("User Name")
        stack_3.lay.addWidget(stack_3.l1)
        stack_3.l2.setPlaceholderText("PassWord")
        stack_3.lay.addWidget(stack_3.l2)
        line = QLineEdit()
        line.setPlaceholderText("Confirm Password")
        stack_3.lay.addWidget(line)

        self.addWidget(stack_3)
    def disply1(self):
        self.setCurrentIndex(1)
    def disply2(self):
        self.setCurrentIndex(2)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    wind = stackWidget()
    wind.show()
    app.exec()

 

EX:

from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import sys

class stackWidget(QDialog):
    def __init__(self):
        super(stackWidget, self).__init__()
        self.resize(300,100)
        lay = QVBoxLayout()
        self.stack = QStackedWidget()
        lay.addWidget(self.stack)
        self.setLayout(lay)
        self.first()
        self.second()
        self.third()
    def first(self):
        stack_1 = QWidget()
        lay = QVBoxLayout()
        lbl = QLabel("Welcome Screen")
        btn1 = QPushButton("Log In")
        btn2 = QPushButton("Sign Up")
        lay.addWidget(lbl)
        lay.addWidget(btn1)
        lay.addWidget(btn2)
        stack_1.setLayout(lay)
        stack_1.show()
        self.stack.addWidget(stack_1)

        btn1.clicked.connect(self.disply1)
        btn2.clicked.connect(self.disply2)
    def second(self):
        stack_2 = QWidget()
        lay = QVBoxLayout()
        lbl = QLabel("Log In")
        lbl.setFont(QFont("solid", 30))
        l1 = QLineEdit()
        l1.setPlaceholderText("User Name")
        l2 = QLineEdit()
        l2.setPlaceholderText("Password")
        lay.addWidget(lbl)
        lay.addWidget(l1)
        lay.addWidget(l2)
        stack_2.setLayout(lay)
        stack_2.show()
        self.stack.addWidget(stack_2)
    def third(self):
        stack_3 = QWidget()
        lay = QVBoxLayout()
        lbl = QLabel("Sign Up")
        lbl.setFont(QFont("solid", 30))
        l1 = QLineEdit()
        l1.setPlaceholderText("User Name")
        l2 = QLineEdit()
        l2.setPlaceholderText("Password")
        l3 = QLineEdit()
        l3.setPlaceholderText("Confirm Password")
        lay.addWidget(lbl)
        lay.addWidget(l1)
        lay.addWidget(l2)
        lay.addWidget(l3)
        stack_3.setLayout(lay)
        stack_3.show()
        self.stack.addWidget(stack_3)
    def disply1(self):
        self.stack.setCurrentIndex(1)
    def disply2(self):
        self.stack.setCurrentIndex(2)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    wind = stackWidget()
    wind.show()
    app.exec()


قم بتنزيل الصورة في الأسفل وتكبيرها حتي تستطيع قراءة المقال باللغة العربية بشكل أوضح:



Comments

Popular posts from this blog

QFormLayoutشرح ال

QGridLayoutشرح ال