בקשת מידע | שעון עצר בפייתון
-
מעוניין לבנות תוכנה שכוללת מד זמן או שעון עצר - איך שתרצו לקרוא לזה, הבעיה היא שאני רוצה לספור את השניות והדקות החל מלחיצה על כפתור, ושזה יישמר בפורמט של זמן, כלומר כל 60 שניות יהיה דקה, כל 60 דקות יהיה שעה וכו'. איך אפשר לעשות את זה?
עד כמה שידוע לי מודול time לא נותן כזו פונקציה, אפשר רק לקבל את השניות והדקות של השעון המקומי (time.localtime) אבל איך אפשר להתחיל את השעון מ 00:00?
מקוה ששאלתי ברורה ותודה מראש -
@מאן-דאמר-5 מה שאתה אמור לשמור זה את ההבדל בין 2 זמנים - זמן התחלת הספירה וזמן הסיום, זה לא "זמן" אלא "משך", אתה לא מאפס שעון לאפס ומתחיל לספור,
אם יש לך משתנהstart
שמכיל datetime (או במקרה של מודול time זמן יוניקס - מספר השניות מאז תאריך מסוים במקום מסוים) של זמן התחלת הספירה, ומשתנהend
שמכיל datetime (או זמן יוניקס כנ"ל) של זמן הסיום, אם אתה מפחית את start מend, תקבל את ההפרש ביניהם - אם השתמשת בdatetime.now()
, ההפרש יהיה מיוצג ע"יdatetime.timedelta
שיש לו כמה מתודות, אם השתמשת במודול time אז זה יהיה פשוט מספר השניות שעבר.
אפשר כמובן גם לעשות משתנה של מונה שניות, ולעשות לולאה שמוסיפה אליו כל X זמן, אבל זה פחות אלגנטי ופחות מדויק לכאורה. -
@צדיק-תמים אני חושש שלא הובנתי נכון, או שלא הבנתי אותך
אני צריך לבנות שעון עצר דיגיטלי עם ויזואליזיציה של הזמן שעובר, זאת אומרת משהו שמתחיל ב 00:00 ומתעדכן כל שניה החל מלחיצת הכפתור.
לא מספיק לי רק משתני start - end שיתנו לי את הפרש הזמן ביניהם.
גם ליצור משתנים באופן ידני כמו שכתבת בסוף זה לא כל כך פשוט וודאי לא מדויק. -
@מאן-דאמר-5 לאיזה ויזואליזציה אתה מתכוון בפייתון?
איך בכלל יש לך "כפתור" בפייתון?
תפרט יותר על הכלים שבהם אתה משתמש -
@צדיק-תמים יש הרבה חבילות של GUI (ממשק משתמש גרפי) בפייתון.
ספציפית אני משתמש ב pysimplegui, ממליץ בחום לכל מי שלא רוצה להסתבך ולבנות הכל לבד עם tkinter, pyqt או wxpython.
בכל אופן לענייננו זה לא משנה, נניח שאני רוצה ייצוג בקונסול של שעון עצר בצורה כזו:
00:00
00:01
00:02
00:03
00:04
וכו'...
אפשר לעשות את זה עם לולאה כך -x = 0 while True: time.sleep(1) x += 1 print(x)
וכאמור זה לא מדויק וצריך לטפל ידנית בשניות והדקות וכו'.
-
@מאן-דאמר-5 אולי?
start = datetime.now() while True: print ( datetime.now() - start )
-
-
@פייתוניסט פתרון חלקי....
מה יקרה אחרי 20 שניות אם הערך של start יהיה 40...? -
@מאן-דאמר-5 למה שהערך של START ישתנה?
-
@פייתוניסט צודק, זה עובד יפה...
יש רק בעיה אחת, שזאת לולאה שממש מכבידה על המחשב כי היא רצה כל הזמן, ואם אני משתמש ב time.sleep אז יש חוסר דיוק של בערך מאית שניה בכל שניה. לפחות במחשב שלי, זה אמור להיות משתנה לפי מהירות המעבד. צריך שעון שמתעדכן פעם בשניה. אין דבר כזה?
||במודול pygame.time.Clock יש פונקציה tick אם אינני טועה, שבעזרתה אפשר להתגבר על חוסר הדיוק של time.sleep, אבל ממש חבל לייבא את pygame רק בשביל זה, לא?|| -
פוסט זה נמחק!
-
@מאן-דאמר-5 נסה את האמור כאן:
https://www.geeksforgeeks.org/create-stopwatch-using-python
או כאן:
https://www.codespeedy.com/how-to-create-a-stopwatch-in-python
ובקיצור: חיפוש גוגל