تقنيات نور التعليمية تقنيات نور التعليمية
في الوقت الحالي

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

في الوقت الحالي
جاري التحميل ...

الدرس 21 – استخدام QTimeEdit في PyQt

الفكرة العامة

  • QTimeEdit يعرض أداة إدخال الوقت يمكن زيادتها أو إنقاصها بأسهم أو عن طريق الكتابة.
  • يمكن تحديد الوقت الافتراضي عند التشغيل.
  • يمكن قراءة الوقت الذي يحدده المستخدم ومعالجته.
استخدام QTimeEdit

المكتبات المطلوبة

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QTimeEdit
from PyQt5.QtCore import QTime, Qt

مثال أساسي على QTimeEdit

class TimeEditExample(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("مثال على QTimeEdit")
        self.setGeometry(200, 200, 300, 150)

        layout = QVBoxLayout()

        # أداة التحكم في الوقت
        self.time_edit = QTimeEdit()
        self.time_edit.setDisplayFormat("HH:mm:ss")  # عرض الساعات:الدقائق:الثواني
        self.time_edit.setTime(QTime.currentTime())  # الوقت الحالي

        # تسمية لعرض الوقت المختار
        self.label = QLabel("الوقت الحالي")
        self.label.setAlignment(Qt.AlignCenter)

        # عند تغيير الوقت
        self.time_edit.timeChanged.connect(self.show_time)

        layout.addWidget(self.time_edit)
        layout.addWidget(self.label)

        self.setLayout(layout)

    def show_time(self, time):
        self.label.setText(f"الوقت المختار: {time.toString('HH:mm:ss')}")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = TimeEditExample()
    window.show()
    sys.exit(app.exec_())

شرح الكود

  1. QTimeEdit() لإنشاء عنصر اختيار الوقت.
  2. setDisplayFormat("HH:mm:ss") لتحديد طريقة عرض الوقت (24 ساعة).
  3. setTime(QTime.currentTime()) لتحديد وقت البداية.
  4. timeChanged.connect(...) لربط أي تغيير بدالة معينة.

تمرين عملي – حساب الفرق بين الوقت الحالي ووقت يحدده المستخدم

في هذا التمرين، سيختار المستخدم وقتًا معينًا، وسيتم حساب كم دقيقة متبقية أو مضت منذ الوقت الحالي.


الكود مع الحل

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QTimeEdit
from PyQt5.QtCore import QTime, Qt

class TimeDifference(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("حساب الفرق بين الأوقات")
        self.setGeometry(200, 200, 350, 200)

        layout = QVBoxLayout()

        self.time_edit = QTimeEdit()
        self.time_edit.setDisplayFormat("HH:mm:ss")
        self.time_edit.setTime(QTime.currentTime())

        self.label = QLabel("اختر وقتًا لحساب الفرق")
        self.label.setAlignment(Qt.AlignCenter)

        self.time_edit.timeChanged.connect(self.calculate_difference)

        layout.addWidget(self.time_edit)
        layout.addWidget(self.label)
        self.setLayout(layout)

    def calculate_difference(self, selected_time):
        now = QTime.currentTime()
        diff_minutes = now.msecsTo(selected_time) / 60000  # التحويل من مللي ثانية إلى دقائق

        if diff_minutes > 0:
            self.label.setText(f"المتبقي: {diff_minutes:.0f} دقيقة")
        elif diff_minutes == 0:
            self.label.setText("هذا هو الوقت الحالي ✅")
        else:
            self.label.setText(f"مرّ {abs(diff_minutes):.0f} دقيقة على الوقت المختار")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = TimeDifference()
    window.show()
    sys.exit(app.exec_())

شرح التمرين

  • msecsTo() تحسب الفرق بين وقتين بالمللي ثانية.
  • نحول الفرق إلى دقائق بقسمة على 60000.
  • إذا الفرق موجب → الوقت في المستقبل.
  • إذا الفرق سالب → الوقت في الماضي.
  • إذا الفرق صفر → الوقت الحالي.

📌 النتيجة:
أداة احترافية لتحديد الوقت وحساب الفروقات، يمكن دمجها مع QCalendarWidget لتحديد تاريخ ووقت معًا.

عن الكاتب

Tamer Ahmed

التعليقات


اتصل بنا

إذا أعجبك محتوى مدونتنا نتمنى البقاء على تواصل دائم ، فقط قم بإدخال بريدك الإلكتروني للإشتراك في بريد المدونة السريع ليصلك جديد المدونة أولاً بأول ، كما يمكنك إرسال رساله بالضغط على الزر المجاور ...

جميع الحقوق محفوظة

تقنيات نور التعليمية