يوفر هذا البرنامج التعليمي مقدمة شاملة لويدجت QPushButton
في PyQt5 وتفاعله مع العناصر الأساسية الأخرى. سنبني على تنفيذ زر أساسي، واستكشاف تقنيات التصميم ومعالجة الأحداث لإنشاء تطبيقات تفاعلية وجذابة بصريًا.
جدول المحتويات
- إنشاء زر ضغط
- تصميم زر الضغط
- معالجة نقرات الأزرار: الإشارات والفتحات
- التكامل مع QLabel: عرض المعلومات
- التصميم المتقدم باستخدام QStyleSheet
1. إنشاء زر ضغط
يُعدّ QPushButton
عنصر بناء أساسي في تطوير واجهة المستخدم الرسومية في PyQt5. لنقم بإنشاء زر بسيط:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("My PyQt5 App")
button = QPushButton("انقر هنا!")
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
يقوم هذا الكود بإنشاء نافذة تحتوي على زر مكتوب عليه “انقر هنا!”. الزر حاليًا غير نشط؛ سنضيف وظائفه في القسم التالي.
2. تصميم زر الضغط
توفر PyQt5 طرقًا متنوعة لتخصيص مظهر أزرارك. يمكننا تغيير النص، والخط، وحتى إضافة أيقونات:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt5.QtGui import QFont, QIcon
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("زر مصمم")
button = QPushButton("انقر هنا!")
button.setFont(QFont('Arial', 12)) #ضبط الخط
button.setIcon(QIcon('path/to/your/icon.png')) #إضافة أيقونة (استبدل بمسار أيقونتك)
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
تذكر استبدال 'path/to/your/icon.png'
بالمسار الفعلي لملف أيقونتك.
3. معالجة نقرات الأزرار: الإشارات والفتحات
لجعل الزر تفاعليًا، نستخدم الإشارات والفتحات. تُصدر إشارة عندما يحدث حدث (مثل نقرة زر)، والفتحة هي دالة تستجيب للإشارة.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QLabel
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("زر تفاعلي")
button = QPushButton("انقر هنا!")
label = QLabel("لم يتم النقر على الزر بعد.")
layout = QVBoxLayout()
layout.addWidget(button)
layout.addWidget(label)
window.setLayout(layout)
def on_button_click():
label.setText("تم النقر على الزر!")
button.clicked.connect(on_button_click) #ربط الإشارة بالفتحة
window.show()
sys.exit(app.exec_())
يوضح هذا المثال ربط إشارة clicked
للزر بالدالة on_button_click
، والتي تقوم بتحديث تسمية للإشارة إلى أن الزر قد تم الضغط عليه.
4. التكامل مع QLabel: عرض المعلومات
تُعدّ ويدجيتات QLabel
مثالية لعرض النص أو الصور بجانب الأزرار. إليك كيفية دمجها:
# (يمكن توسيع رمز القسم 3 هنا لتضمين QLabel لعرض المعلومات)
(يمكن بسهولة توسيع رمز القسم 3 ليشمل QLabel لعرض المعلومات. للاختصار، لم يتم عرضه صراحةً هنا، ولكن المفهوم مُوضح في المثال السابق.)
5. التصميم المتقدم باستخدام QStyleSheet
للحصول على تصميم أكثر تعقيدًا، استخدم QStyleSheet. يسمح لك هذا بتطبيق أنماط تشبه CSS على ويدجيتاتك.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt5.QtCore import Qt
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("مثال QStyleSheet")
button = QPushButton("انقر هنا!")
button.setStyleSheet("QPushButton { background-color: lightblue; color: darkblue; border-radius: 10px; padding: 10px; }")
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
يستخدم هذا QStyleSheet لتصميم الزر بخلفية زرقاء فاتحة، ونص أزرق داكن، وزوايا مستديرة، ومسافة بادئة.