أريد إنشاء برنامج **حسابات بسيط بلغة Python** يعمل على **نظام Windows**، ومُصمَّم خصيصًا ليكون **متوافقًا بالكامل مع برنامج NVDA** (قارئ الشاشة).

### 1. بيئة التشغيل

* اللغة: Python
* النظام: Windows
* الواجهة: نافذة بسيطة (GUI) قابلة للاستدعاء من **سكريبت داخل إضافة NVDA** عبر دالة عامة.
* الالتزام بإرشادات سهولة الوصول (Accessibility):

  * جميع العناصر مقروءة بوضوح عبر NVDA
  * ترتيب تنقّل منطقي باستخدام الأسهم ولوحة المفاتيح فقط

---

### 2. فكرة الواجهة العامة

الواجهة تتكون من **عمودين فقط**:

1. **عمود المدفوعات**
2. **عمود المخصوم**

وبين **رأسي العمودين** يظهر **المبلغ الإجمالي المتبقي** (ليس عمودًا مستقلاً).

---

### 3. عمود المدفوعات

* في أعلى العمود:

  * **مربع تحرير (Edit Box)**:

    * يقبل **الأرقام فقط**
    * يمنع إدخال أي حروف أو رموز
* عند كتابة رقم ثم الضغط على **Enter**:

  * يُضاف المبلغ مباشرة إلى عمود المدفوعات
  * يتم **تحديث رأس العمود** ليعرض **إجمالي المدفوعات**
  * يتم الجمع تلقائيًا مع أي مبالغ سابقة

#### مثال:

* إدخال: 1000 → رأس العمود = 1000
* إدخال: 2000 → رأس العمود = 3000

---

### 4. عمود المخصوم

* نفس منطق عمود المدفوعات تمامًا، مع اختلاف واحد:

  * المبالغ **تُخصم** من الإجمالي بدل إضافتها
* رأس العمود يعرض **إجمالي المبالغ المخصومة**

---

### 5. المبلغ الإجمالي المتبقي

* يظهر **بين رأسي العمودين**
* يتم تحديثه تلقائيًا:

  * الإجمالي = مجموع المدفوعات − مجموع المخصوم
* ليس عنصر إدخال، بل **نص للعرض فقط**

---

### 6. إنشاء الصفوف تلقائيًا

* كل عملية إضافة (مدفوعات أو مخصوم):

  * تنشئ **صفًا جديدًا تلقائيًا** أسفل مربع التحرير
  * الصف يكون **للقراءة فقط**
* محتوى الصف:

  * المبلغ
  * اليوم الذي تمت فيه الإضافة

#### عرض التاريخ:

* افتراضيًا يظهر **اليوم فقط**
* (اليوم / الشهر / السنة / الساعة) تكون موجودة داخليًا لكن **مخفية**

#### مثال:

* يوم 1: إضافة 1000
  → `1000 ج يوم 1`
* يوم 2: إضافة 1000
  → `1000 ج يوم 2`
* إذا لم تتم إضافة في يوم 3 أو 4:

  * **لا يتم إنشاء أي صف لهما**

> نفس المنطق يُطبق بالكامل على عمود المخصوم.

---

### 7. التنقل باستخدام لوحة المفاتيح

* **السهم الأيمن**: الانتقال إلى عمود المدفوعات
* **السهم الأيسر**: الانتقال إلى عمود المخصوم
* **السهم السفلي / العلوي**: التنقل بين الصفوف داخل نفس العمود
* يجب أن يقرأ NVDA:

  * المبلغ
  * اليوم
  * نوع العمود (مدفوعات / مخصوم)

#### مثال تنقّل:

* سهم يمين → `1000 جنيه، يوم 1، مدفوعات`
* سهم يسار → `500 جنيه، يوم 2، مخصوم`

---

### 8. متطلبات إضافية مهمة

* لا يستخدم الفأرة نهائيًا
* جميع الأحداث تعتمد على لوحة المفاتيح
* الأداء خفيف وسريع
* الكود منظم وقابل للدمج داخل إضافة NVDA بسهولة
