الفكرة العامة
- 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_())
شرح الكود
- QTimeEdit() لإنشاء عنصر اختيار الوقت.
- setDisplayFormat("HH:mm:ss") لتحديد طريقة عرض الوقت (24 ساعة).
- setTime(QTime.currentTime()) لتحديد وقت البداية.
- 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 لتحديد تاريخ ووقت معًا.