QStackedWidgetشرح ال
QStackedWidget
تدعم تراكم النوافذ بحيث نافذة واحدة تظهر في نفس الوقت
Create object:
Stack = QStackedWidget(self)
Function:
addWidget() | QStackedWidgetتضيف واجهة لل | |
setLayout() | QStackedWidgetتضيف حاوية ومكونات لواجهات ال | |
count() | QStackedWidgetترجع عدد النوافذ اللي علي ال | |
currentIndex() | بتاع الشاشة اللي ظاهرة حالياindex ترجع ال | |
indexOf(self.stack2) | بتاع الشاشة اللي ممرة ليهindexترجع ال | |
| بتاعها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. | |
| 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
Post a Comment