📌 الفكرة
سنتعلم كيف نضيف نظام صلاحيات بحيث:
- عند تسجيل الدخول بـ Admin تظهر كل الخصائص (مثل إدارة المستخدمين والمنتجات).
- عند تسجيل الدخول بـ User تظهر واجهة محدودة (عرض المنتجات فقط).
وسنستخدم Qt Designer لرسم الواجهات بدل الكود المباشر.
🖌️ خطوات التصميم في 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_())
✅ كيف يعمل؟
- عند تشغيل البرنامج تظهر نافذة تسجيل الدخول (login.ui).
- إذا دخل المستخدم كـ Admin → تفتح نافذة
admin.ui
. - إذا دخل كـ User → تفتح نافذة
user.ui
. - إذا أخطأ → تظهر رسالة خطأ.