تقنيات نور التعليمية تقنيات نور التعليمية

آخر الأخبار

جاري التحميل ...

الدرس 16: نظام الصلاحيات (Roles System) باستخدام PyQt Designer

📌 الفكرة

سنتعلم كيف نضيف نظام صلاحيات بحيث:

  • عند تسجيل الدخول بـ Admin تظهر كل الخصائص (مثل إدارة المستخدمين والمنتجات).
  • عند تسجيل الدخول بـ User تظهر واجهة محدودة (عرض المنتجات فقط).

وسنستخدم Qt Designer لرسم الواجهات بدل الكود المباشر.


Roles System

🖌️ خطوات التصميم في Qt Designer

1- افتح Qt Designer وأنشئ واجهة جديدة من نوع Dialog with Buttons.

2- ضع العناصر التالية:

  • QLineEdit لاسم المستخدم.
  • QLineEdit لكلمة المرور (واجعل echoMode = Password).
  • QPushButton بعنوان "تسجيل الدخول".

3- احفظ الملف باسم: login.ui.

4- ثم أنشئ واجهتين إضافيتين:

  • admin.ui → تحوي زر "إدارة المنتجات" وزر "إدارة المستخدمين".
  • user.ui → تحوي زر "عرض المنتجات".


💻 الكود (ربط الواجهات)

import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QDialog, QMessageBox, QMainWindow


# نافذة المسؤول (Admin)
class AdminWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        uic.loadUi("admin.ui", self)  # تحميل واجهة المسؤول


# نافذة المستخدم (User)
class UserWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        uic.loadUi("user.ui", self)  # تحميل واجهة المستخدم


# نافذة تسجيل الدخول
class LoginWindow(QDialog):
    def __init__(self):
        super().__init__()
        uic.loadUi("login.ui", self)

        self.login_button = self.findChild(type(self.findChild(object, "QPushButton")), "loginButton")
        self.username_input = self.findChild(type(self.findChild(object, "QLineEdit")), "usernameLineEdit")
        self.password_input = self.findChild(type(self.findChild(object, "QLineEdit")), "passwordLineEdit")

        self.login_button.clicked.connect(self.check_login)

    def check_login(self):
        username = self.username_input.text()
        password = self.password_input.text()

        if username == "admin" and password == "1234":
            self.accept()
            self.admin_window = AdminWindow()
            self.admin_window.show()

        elif username == "user" and password == "0000":
            self.accept()
            self.user_window = UserWindow()
            self.user_window.show()

        else:
            QMessageBox.warning(self, "خطأ", "بيانات الدخول غير صحيحة!")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    login = LoginWindow()
    login.show()
    sys.exit(app.exec_())

✅ كيف يعمل؟

  1. عند تشغيل البرنامج تظهر نافذة تسجيل الدخول (login.ui).
  2. إذا دخل المستخدم كـ Admin → تفتح نافذة admin.ui.
  3. إذا دخل كـ User → تفتح نافذة user.ui.
  4. إذا أخطأ → تظهر رسالة خطأ.

عن الكاتب

Tamer Ahmed

التعليقات


اتصل بنا

إذا أعجبك محتوى مدونتنا نتمنى البقاء على تواصل دائم ، فقط قم بإدخال بريدك الإلكتروني للإشتراك في بريد المدونة السريع ليصلك جديد المدونة أولاً بأول ، كما يمكنك إرسال رساله بالضغط على الزر المجاور ...

جميع الحقوق محفوظة

تقنيات نور التعليمية