البرمجة

تخصيص QTableView في PyQt: دليل شامل

عند استخدام واجهة PyQt لتطوير تطبيقات الرسوم البيانية، قد تحتاج في بعض الأحيان إلى تخصيص عناوين الرؤوس الأفقية والرأسية في الجداول الخاصة بك. في هذا السياق، تبدو QTableView هي الخيار المناسب لتحقيق هذا الهدف.

لتعيين عناوين الرأس الأفقي (العمودية) والرأس الرأسي (الأفقية) في QTableView، يمكنك القيام بذلك باستخدام النموذج الخاص بك. سأوضح لك الخطوات بالتفصيل.

أولاً، قم بإنشاء نموذج البيانات الذي سيكون مصدرًا لـ QTableView الخاص بك. يمكنك استخدام QStandardItemModel لهذا الغرض. على سبيل المثال:

python
from PyQt5.QtWidgets import QApplication, QTableView, QStandardItemModel, QHeaderView from PyQt5.QtCore import Qt app = QApplication([]) # Create a QStandardItemModel model = QStandardItemModel() # Set the horizontal header labels horizontal_labels = ["Name", "Age", "Sex", "Add"] model.setHorizontalHeaderLabels(horizontal_labels) # Set the vertical header labels (optional) vertical_labels = ["Row 1", "Row 2", "Row 3"] model.setVerticalHeaderLabels(vertical_labels) # Populate your data here (you can add rows and columns) # Create a QTableView and set the model table_view = QTableView() table_view.setModel(model) # Set alignment for horizontal header items table_view.horizontalHeader().setDefaultAlignment(Qt.AlignHCenter) # Set alignment for vertical header items (optional) table_view.verticalHeader().setDefaultAlignment(Qt.AlignVCenter) # Show the table view table_view.show() app.exec_()

في هذا المثال، تم إنشاء نموذج QStandardItemModel وتم تعيين عناوين الرأس الأفقي والرأس الرأسي باستخدام setHorizontalHeaderLabels و setVerticalHeaderLabels على التوالي. يمكنك أيضًا تحديد تنسيق النص في الرؤوس باستخدام setDefaultAlignment.

تأكد من تخصيص البيانات الخاصة بك وإضافتها إلى النموذج حسب احتياجات التطبيق الخاص بك. يمكنك أيضًا تغيير تنسيق الرأس والخلايا حسب الحاجة. هذا يوفر لك التحكم الكامل في مظهر QTableView الخاص بك.

المزيد من المعلومات

بالتأكيد، دعني أقدم لك مزيد من المعلومات حول كيفية تخصيص QTableView في PyQt وإدارة المزيد من السمات المهمة.

إضافة بيانات إلى الجدول:

بعد تعيين عناوين الرأس، يمكنك إضافة البيانات إلى النموذج باستخدام QStandardItem. على سبيل المثال، يمكنك إضافة صفوف كالتالي:

python
# Create QStandardItem for each cell item_name = QStandardItem("John") item_age = QStandardItem("25") item_sex = QStandardItem("Male") item_add = QStandardItem("123 Main St.") # Add items to the model model.appendRow([item_name, item_age, item_sex, item_add])

تخصيص خصائص العرض:

يمكنك تخصيص خصائص العرض للجدول، مثل حجم الخلية، لون الخلفية، والخط. على سبيل المثال:

python
# Set font for the entire table font = table_view.font() font.setBold(True) table_view.setFont(font) # Set background color for header header_palette = table_view.horizontalHeader().palette() header_palette.setColor(QPalette.Window, Qt.lightGray) table_view.horizontalHeader().setPalette(header_palette) # Set background color for cells table_view.setStyleSheet("QTableView { background-color: #f0f0f0; }")

التفاعل مع الحدث:

يمكنك أيضًا إضافة التفاعل مع الحدث إلى QTableView، على سبيل المثال، استجابة عند النقر على خلية معينة:

python
def cell_clicked(index): print("Cell Clicked:", index.row(), index.column()) # Connect the clicked signal to the function table_view.clicked.connect(cell_clicked)

تغيير حجم الخلية:

يمكنك تحديد حجم الخلية بشكل مباشر عن طريق تعيين عرض وارتفاع الخلية باستخدام setRowHeight و setColumnWidth:

python
# Set height for a specific row table_view.verticalHeader().setSectionResizeMode(QHeaderView.Fixed) table_view.verticalHeader().setDefaultSectionSize(30) # Set height in pixels # Set width for a specific column table_view.horizontalHeader().setSectionResizeMode(0, QHeaderView.Fixed) table_view.setColumnWidth(0, 150) # Set width in pixels

هذه بعض النقاط التي يمكنك استكشافها لتخصيص QTableView في PyQt بطريقة أكثر شمولًا. يجب عليك تكييف هذه الأمثلة وفقًا لاحتياجات تطبيقك الخاص.

زر الذهاب إلى الأعلى