اذهب إلى المحتوى

لوحة المتصدرين

  1. محمد ال شكر

    محمد ال شكر

    الأعضاء


    • نقاط

      3

    • المساهمات

      15


  2. محمد Mmm2

    محمد Mmm2

    الأعضاء


    • نقاط

      2

    • المساهمات

      184


  3. Ali Ahmed55

    Ali Ahmed55

    الأعضاء


    • نقاط

      1

    • المساهمات

      2040


  4. احمد حسين10

    احمد حسين10

    الأعضاء


    • نقاط

      1

    • المساهمات

      72


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 10/03/24 in أجوبة

  1. عندما اضع ال no-repeat او center تختفي الصورة background-image:url('../imgs/bgss.jpg') no-repeat center;
    2 نقاط
  2. دوره اداره المنتجات التي تقدمها حسوب لم افهم ماهي الدوره او ما ذا تقدم بضبط و اين يمكن ان اعمل بعد اجتيازها لقد قرأت الدوره ولم افهمها
    1 نقطة
  3. اريد طريقه اطبع الفاتوره في ملف وتكون جميله بنفس التخطيط بالواجهه import sys import traceback import os import sqlite3 from PyQt6.QtWidgets import ( QApplication, QWidget, QVBoxLayout, QTableWidget, QTableWidgetItem, QLabel, QLineEdit, QPushButton, QMessageBox, QSizePolicy, QSplitter, QHBoxLayout, QFrame ) from PyQt6.QtCore import Qt from PyQt6.QtGui import QPixmap, QPainter class FieldsWidget(QWidget): def __init__(self): super().__init__() # تعيين لون الخلفية يميل إلى البياض self.setStyleSheet("background-color: #FFFFFF;") # لون خلفية مائل إلى البياض # إعداد التخطيط العام main_layout = QVBoxLayout(self) self.setLayout(main_layout) # تقسيم النافذة إلى قسمين باستخدام QSplitter splitter = QSplitter(Qt.Orientation.Horizontal) # ---- القسم الأول: الفاتورة ---- right_layout = QVBoxLayout() # إعداد الرأس باستخدام QVBoxLayout self.header_frame = QFrame() # حفظ إطار الرأس في خاصية الكائن self self.header_frame.setStyleSheet("border: 2px solid #4CAF50; border-radius: 10px; padding: 10px;") header_layout = QVBoxLayout(self.header_frame) # الشعار واسم الشركة في صف واحد company_info_layout = QHBoxLayout() self.logo_label = QLabel("الشعار") self.logo_label.setAlignment(Qt.AlignmentFlag.AlignCenter) self.logo_label.setFixedSize(80, 80) # حجم مربع مخصص للشعار self.company_info_label = QLabel("اسم الشركة: شركة مثال\nالعنوان: شارع 123، المدينة\nاسم العميل: العميل الافتراضي") self.company_info_label.setAlignment(Qt.AlignmentFlag.AlignLeft) self.company_info_label.setStyleSheet("font-size: 12px;") # إضافة الشعار ومعلومات الشركة إلى التخطيط الأفقي company_info_layout.addWidget(self.logo_label) company_info_layout.addWidget(self.company_info_label) # عنوان الفاتورة self.invoice_title_label = QLabel("فاتورة مبيعات مبسطة") self.invoice_title_label.setAlignment(Qt.AlignmentFlag.AlignCenter) self.invoice_title_label.setStyleSheet("font-size: 16px; font-weight: bold;") # إضافة العناصر إلى header_layout header_layout.addLayout(company_info_layout) header_layout.addWidget(self.invoice_title_label) # إضافة الإطار إلى التخطيط العام right_layout.addWidget(self.header_frame) # إضافة header_frame إلى التخطيط العام # إعداد جدول التفاصيل self.table_details = QTableWidget() self.table_details.setColumnCount(12) self.table_details.setHorizontalHeaderLabels([ "ID", "رقم الفاتورة", "رقم الصنف", "اسم الصنف", "السعر", "الكمية", "الإجمالي الفرعي", "خصم الصنف", "نسبة الخصم", "الإجمالي بعد الخصم", "قيمة الضريبة", "الإجمالي بعد الضريبة" ]) self.table_details.setColumnHidden(0, True) # إخفاء عمود المعرف self.table_details.setColumnHidden(1, True) # إخفاء عمود رقم الفاتورة self.table_details.setLayoutDirection(Qt.LayoutDirection.RightToLeft) # تغيير الاتجاه إلى اليمين لليسار self.table_details.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) right_layout.addWidget(self.table_details) # إعداد تخطيط الحقول السفلية bottom_frame = QFrame() bottom_frame.setStyleSheet("border: 2px solid #4CAF50; border-radius: 10px; padding: 10px;") bottom_layout = QHBoxLayout(bottom_frame) # إعداد مستطيل الإجماليات totals_widget = QWidget() totals_layout = QVBoxLayout(totals_widget) self.total_label = QLabel("الإجمالي: 0") self.discount_label = QLabel("الخصم: 0") self.vat_label = QLabel("قيمة الضريبة: 0") self.total_after_vat_label = QLabel("الإجمالي بعد الضريبة: 0") # إضافة الحقول إلى التخطيط العمودي totals_layout.addWidget(self.total_label) totals_layout.addWidget(self.discount_label) totals_layout.addWidget(self.vat_label) totals_layout.addWidget(self.total_after_vat_label) # ضبط ارتفاع مستطيل الإجماليات totals_widget.setFixedHeight(170) # تقليل الارتفاع إلى 100 بكسل # إضافة مستطيل الإجماليات إلى التخطيط السفلي bottom_layout.addWidget(totals_widget) # إعداد تخطيط المدفوعات payments_widget = QWidget() payments_layout = QVBoxLayout(payments_widget) self.cash_paid_label = QLabel("المدفوع نقداً: 0") self.bank_paid_label = QLabel("المدفوع بنك: 0") # إضافة حقول المدفوعات payments_layout.addWidget(self.cash_paid_label) payments_layout.addWidget(self.bank_paid_label) # ضبط ارتفاع مستطيل المدفوعات payments_widget.setFixedHeight(100) # تقليل الارتفاع إلى 100 بكسل # إضافة مستطيل المدفوعات إلى التخطيط السفلي bottom_layout.addWidget(payments_widget) # إعداد تخطيط الباركود barcode_widget = QWidget() barcode_layout = QVBoxLayout(barcode_widget) # حقل للباركود self.barcode_label = QLabel() # لا نضع نص هنا self.barcode_label.setAlignment(Qt.AlignmentFlag.AlignCenter) self.barcode_label.setFixedSize(150, 100) # تصغير حجم الباركود إلى 150x100 بكسل # إضافة الباركود إلى التخطيط barcode_layout.addWidget(self.barcode_label) # ضبط ارتفاع مستطيل الباركود barcode_widget.setFixedHeight(120) # تقليل الارتفاع إلى 120 بكسل # إضافة مستطيل الباركود إلى التخطيط السفلي bottom_layout.addWidget(barcode_widget) # إضافة الإطار إلى التخطيط العام right_layout.addWidget(bottom_frame) # إضافة القسم الأيمن إلى QSplitter right_widget = QWidget() right_widget.setLayout(right_layout) splitter.addWidget(right_widget) # ---- القسم الثاني: البحث والفواتير ---- left_layout = QVBoxLayout() # حقل البحث self.search_input = QLineEdit(self) self.search_input.setPlaceholderText("ابحث عن رقم الفاتورة...") self.search_input.textChanged.connect(self.filter_invoices) left_layout.addWidget(self.search_input) # إعداد جدول الفواتير self.table_invoices = QTableWidget() self.table_invoices.setColumnCount(13) self.table_invoices.setHorizontalHeaderLabels([ "ID", "رقم الفاتورة", "نوع الفاتورة", "نوع الدفع", "رقم الحساب", "التاريخ", "الإجمالي", "الخصم", "الإجمالي بعد الخصم", "قيمة الضريبة", "الإجمالي بعد الضريبة", "المدفوع نقدا", "المدفوع بنك" ]) self.table_invoices.setColumnHidden(0, True) # إخفاء عمود المعرف self.table_invoices.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) left_layout.addWidget(self.table_invoices) # إضافة القسم الأيسر إلى QSplitter left_widget = QWidget() left_widget.setLayout(left_layout) splitter.addWidget(left_widget) # إضافة QSplitter إلى التخطيط الرئيسي main_layout.addWidget(splitter) # إضافة المتغيرات الجديدة self.selected_invoice_number = None self.load_data() self.table_invoices.cellClicked.connect(self.load_invoice_details) self.setWindowTitle("معاينة الفاتورة") self.setGeometry(300, 300, 1000, 600) # تعديل حجم النافذة def filter_invoices(self): search_text = self.search_input.text().lower() filtered_invoices = [invoice for invoice in self.invoices_data if search_text in invoice[1].lower()] self.populate_invoices_table(filtered_invoices) def populate_invoices_table(self, invoices): self.table_invoices.setRowCount(0) for invoice in invoices: row_position = self.table_invoices.rowCount() self.table_invoices.insertRow(row_position) for column, data in enumerate(invoice): self.table_invoices.setItem(row_position, column, QTableWidgetItem(str(data))) def load_data(self): base_dir = os.path.dirname(os.path.abspath(__file__)) # المجلد الحالي db_path = os.path.join(base_dir, '..', 'data', 'database.db') # المسار إلى قاعدة البيانات if not os.path.exists(db_path): QMessageBox.critical(self, "خطأ", "قاعدة البيانات غير موجودة.") return conn = sqlite3.connect(db_path) cursor = conn.cursor() # جلب جميع الفواتير cursor.execute("SELECT * FROM invoices") self.invoices_data = cursor.fetchall() self.populate_invoices_table(self.invoices_data) conn.close() def load_invoice_details(self, row, column): invoice_number = self.table_invoices.item(row, 1).text() # الحصول على رقم الفاتورة من العمود الثاني self.load_invoice_details_from_db(invoice_number) def load_invoice_details_from_db(self, invoice_number): base_dir = os.path.dirname(os.path.abspath(__file__)) # المجلد الحالي db_path = os.path.join(base_dir, '..', 'data', 'database.db') # المسار إلى قاعدة البيانات if not os.path.exists(db_path): QMessageBox.critical(self, "خطأ", "قاعدة البيانات غير موجودة.") return conn = sqlite3.connect(db_path) cursor = conn.cursor() # جلب تفاصيل الفاتورة من جدول invoice_details cursor.execute("SELECT * FROM invoice_details WHERE invoice_number=?", (invoice_number,)) details_data = cursor.fetchall() # عرض تفاصيل الفاتورة في الجدول self.populate_invoice_details_table(details_data) # جلب المعلومات من جدول الفواتير الأساسي (للحصول على القيم الإجمالية والمدفوعات) cursor.execute(""" SELECT total, total_discount, discount_percentage, total_after_discount, vat_value, total_after_vat, paid_cash, paid_bank FROM invoices WHERE invoice_number=? """, (invoice_number,)) invoice_data = cursor.fetchone() if invoice_data: # تحديث الحقول الإجمالية والمدفوعات self.total_label.setText(f"الإجمالي: {invoice_data[0]}") self.discount_label.setText(f"الخصم: {invoice_data[1]}") self.vat_label.setText(f"قيمة الضريبة: {invoice_data[4]}") self.total_after_vat_label.setText(f"الإجمالي بعد الضريبة: {invoice_data[5]}") self.cash_paid_label.setText(f"المدفوع نقداً: {invoice_data[6]}") self.bank_paid_label.setText(f"المدفوع بنك: {invoice_data[7]}") else: # إذا لم يتم العثور على الفاتورة، نقوم بإعادة ضبط الحقول self.total_label.setText("الإجمالي: 0") self.discount_label.setText("الخصم: 0") self.vat_label.setText("قيمة الضريبة: 0") self.total_after_vat_label.setText("الإجمالي بعد الضريبة: 0") self.cash_paid_label.setText("المدفوع نقداً: 0") self.bank_paid_label.setText("المدفوع بنك: 0") # إعداد الباركود barcode_image_path = os.path.join(base_dir, 'barcodes', f"{invoice_number}.png") if os.path.exists(barcode_image_path): pixmap = QPixmap(barcode_image_path) self.barcode_label.setPixmap(pixmap) self.barcode_label.setScaledContents(True) else: self.barcode_label.setText("لا توجد صورة باركود") conn.close() def populate_invoice_details_table(self, details): self.table_details.setRowCount(0) for detail in details: row_position = self.table_details.rowCount() self.table_details.insertRow(row_position) for column, data in enumerate(detail): self.table_details.setItem(row_position, column, QTableWidgetItem(str(data))) def exception_hook(type, value, tb): print("Unhandled Exception:") print(f"Type: {type.__name__}") print(f"Value: {value}") print("Traceback:") traceback.print_tb(tb) if __name__ == "__main__": sys.excepthook = exception_hook app = QApplication(sys.argv) window = FieldsWidget() window.show() sys.exit(app.exec())
    1 نقطة
  4. السلام عليكم هم المبرمجين زمن كانوا بيكتبوا الكود ازاى ؟
    1 نقطة
  5. عندما اضيف ايونتان مع الكلام الوصفي لها يكون التريب مثل ما موضح في الفديو ولاكن عندما اضيف الايقونة الثالثة يحدث خطا في الترتيب ولا اعلم حل المشكلة
    1 نقطة
  6. ستجد أسفل فيديو الدرس صندوق للتعليقات كما هنا يرجى طرح سؤالك أسفل الدرس وليس هنا حيث هنا قسم الأسئلة العامة ولا نقوم بإجابة الأسئلة الخاصة بمحتوى الدورة أو الدرس، وذلك لمعرفة الدرس الذي توجد به مشكلتك و لمساعدتك بشكل أفضل. أما بخصوص المشكلة فأنت تقوم بتشغيل الكود من ملف أخر غير ملف AHMED_1.py. وبما أن الملف الذي تقوم بتشغيله لا يوجد بنفس المجلد الخاص بملف AHMED_1.py وهو مجلد AHMED فإن المسار الذي سيبحث فيه عن الملف Ah.json سيكون هو المسار الخاص بالملف الذي يتم تشغيله ولهذا تحدث لك المشكلة أنه لا يعثر على على الملف . والحل هو تمرير المسار الكامل للملف كالتالي : import json import os current_dir = os.path.dirname(os.path.abspath(__file__)) file_path = os.path.join(current_dir, 'Ah.json') with open(file_path,"r") as file: data = json.load(file) print(data) وهكذا سيعمل معك سواء تم تشغيل ملف AHMED_1.py مباشرة أو تم تشغيله من أى ملف أخر.
    1 نقطة
  7. ما هي المصاعب التي تقابل المبرمجين و بتخلي كتير يسيبوا المجال
    1 نقطة
  8. دوره البايثون بذكاء الاصطناعي هل بعد انتهاء فترة الدوره هل سوفا احصل على عمل او ان اكادمية حسوب تبحث لي او انا ابحث لم افهم وما هي الوظائف التي سوفا اعمل بها بعد إتقان الدوره البايثون بذكاء الاصطناعي
    1 نقطة
  9. هل هناك شرح عربي شامل لل System design؟
    1 نقطة
  10. ستجد على اليوتيوب شرح بخصوص ذلك، ابحث عن "شرح system design" وستجد قوائم عن system analysis and design وستجد شرح لـ System Design fundamentals في قناة أحمد الإمام وذلك كافي بالنسبة لك كمطور فما تحتاجه هو الأساسيات وفهم مراحل SDLC أو System Development Life Cycle. لكن مثل تلك المفاهيم ستجدها في المحتوى الأجبني بشكل أفضل، لكونها مفاهيم متقدمة.
    1 نقطة
  11. ما هي اهم المواضيع التي يجب دراستها و معرفتها في data structure في لغة بايثون ؟ و هل يمكن الإكتفاء ب lists و tuples و dictionaries و sets ؟
    1 نقطة
×
×
  • أضف...