Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Обсуждение: как сделать секундомер в python

  1. Обсуждение: как сделать секундомер в python

    Чуваки, всем привет! Тут возникла задачка - нужен секундомер для моего проекта, и я подумал, что Python будет идеальным выбором. Но вот беда, я не совсем понимаю, как его правильно реализовать, чтобы он работал четко и без багов. Можно сказать, новичок я в этом деле. Может, кто-нибудь из вас уже делал что-то подобное и может поделиться кодиком? Желателен пример с пояснениями, чтобы я смог разобраться и чем-нибудь улучшить свой проект. Спасибо!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Привет! Чтобы замутить секундомер на Python, можно юзать библиотеку `time`. Вот простенький примерчик:

    Программный код:
    import time

    def секундомер
    ():
    start_time time.time()
    input('Нажми Enter для остановки:')
    end_time time.time()
    elapsed_time end_time start_time
    print(f'Прошло {elapsed_time} секунд')
    секудномер() 
    Этот код стартует замер после запуска и заканчивает его, когда ты жмешь Enter. Надеюсь, поможет!

  4. Цитата Сообщение от Волчара
    Привет! Чтобы замутить секундомер на Python, можно юзать библиотеку `time`. Вот простенький примерчик:

    Программный код:
    import time

    def секундомер
    ():
    start_time time.time()
    input('Нажми Enter для остановки:')
    end_time time.time()
    elapsed_time end_time start_time
    print(f'Прошло {elapsed_time} секунд')
    секудномер() 
    Этот код стартует замер после запуска и заканчивает его, когда ты жмешь Enter. Надеюсь, поможет!
    О, прикольный примерчик! Весьма лаконично и просто, благодарю!

  5. Хей! Можно сделать чуть замороченнее с потоками, чтобы он тикал в реальном времени. Вот код:

    Программный код:
    import threading
    import time

    class Секундомер(threading.Thread):
    def __init__(self):
    super().__init__()
    self._start_time None
    self
    ._elapsed_time 0
    self
    ._running False

    def старт
    (self):
    if 
    not self._running:
    self._start_time time.time()
    self._running True
    self
    .start()

    def стоп(self):
    if 
    self._running:
    self._elapsed_time += time.time() - self._start_time
    self
    ._running False

    def сброс
    (self):
    self._elapsed_time 0
    self
    ._start_time None
    self
    ._running False

    def get_elapsed_time
    (self):
    if 
    self._running:
    return 
    time.time() - self._start_time self._elapsed_time
    return self._elapsed_time

    def run
    (self):
    while 
    self._running:
    time.sleep(0.1)

    секундомер Секундомер()
    секундомер.старт()
    time.sleep(3# секундомер тикает 3 секунды
    секундомер.стоп()
    print(
    f'Прошло {секундомер.get_elapsed_time()} секунд'
    Этот вариант позволяет реюзать тред, чтобы он работал непрерывно. Чутка посложнее, но зато вроде по-красивому!

  6. Цитата Сообщение от ElenaWarrior
    Хей! Можно сделать чуть замороченнее с потоками, чтобы он тикал в реальном времени. Вот код:

    Программный код:
    import threading
    import time

    class Секундомер(threading.Thread):
    def __init__(self):
    super().__init__()
    self._start_time None
    self
    ._elapsed_time 0
    self
    ._running False

    def старт
    (self):
    if 
    not self._running:
    self._start_time time.time()
    self._running True
    self
    .start()

    def стоп(self):
    if 
    self._running:
    self._elapsed_time += time.time() - self._start_time
    self
    ._running False

    def сброс
    (self):
    self._elapsed_time 0
    self
    ._start_time None
    self
    ._running False

    def get_elapsed_time
    (self):
    if 
    self._running:
    return 
    time.time() - self._start_time self._elapsed_time
    return self._elapsed_time

    def run
    (self):
    while 
    self._running:
    time.sleep(0.1)

    секундомер Секундомер()
    секундомер.старт()
    time.sleep(3# секундомер тикает 3 секунды
    секундомер.стоп()
    print(
    f'Прошло {секундомер.get_elapsed_time()} секунд'
    Этот вариант позволяет реюзать тред, чтобы он работал непрерывно. Чутка посложнее, но зато вроде по-красивому!
    Ого, взрослой подход, спасибо за разъяснения! Надо будет попробовать и осмыслить.

  7. Здарова! Можно замутить секундомер на Tkinter, будет даже с интерфейсом. Смотри пример:

    Программный код:
    import tkinter as tk

    class Секундомер(tk.Frame):
    def __init__(selfmaster=None):
    super().__init__(master)
    self.master master
    self
    .pack()
    self._start_time 0
    self
    .create_widgets()

    def create_widgets(self):
    self.time_label tk.Label(selftext="0.0")
    self.time_label.pack()
    self.start_button tk.Button(selftext="Старт"command=self.start)
    self.start_button.pack()
    self.stop_button tk.Button(selftext="Стоп"command=self.stop)
    self.stop_button.pack()
    self.reset_button tk.Button(selftext="Сброс"command=self.reset)
    self.reset_button.pack()

    def start(self):
    if 
    not self._start_time:
    self._start_time time.time()
    self.update_clock()

    def update_clock(self):
    if 
    self._start_time:
    elapsed_time time.time() - self._start_time
    self
    .time_label.configure(text=str(elapsed_time)[:6])
    self.after(50self.update_clock)

    def stop(self):
    self._start_time 0

    def reset
    (self):
    self._start_time 0
    self
    .time_label.configure(text="0.0")

    root tk.Tk()
    app Секундомер(master=root)
    app.mainloop() 
    Нужно добавить `tkinter` и у тебя будет GUI, а не просто консольный вывод.

  8. Цитата Сообщение от Надя
    Здарова! Можно замутить секундомер на Tkinter, будет даже с интерфейсом. Смотри пример:

    Программный код:
    import tkinter as tk

    class Секундомер(tk.Frame):
    def __init__(selfmaster=None):
    super().__init__(master)
    self.master master
    self
    .pack()
    self._start_time 0
    self
    .create_widgets()

    def create_widgets(self):
    self.time_label tk.Label(selftext="0.0")
    self.time_label.pack()
    self.start_button tk.Button(selftext="Старт"command=self.start)
    self.start_button.pack()
    self.stop_button tk.Button(selftext="Стоп"command=self.stop)
    self.stop_button.pack()
    self.reset_button tk.Button(selftext="Сброс"command=self.reset)
    self.reset_button.pack()

    def start(self):
    if 
    not self._start_time:
    self._start_time time.time()
    self.update_clock()

    def update_clock(self):
    if 
    self._start_time:
    elapsed_time time.time() - self._start_time
    self
    .time_label.configure(text=str(elapsed_time)[:6])
    self.after(50self.update_clock)

    def stop(self):
    self._start_time 0

    def reset
    (self):
    self._start_time 0
    self
    .time_label.configure(text="0.0")

    root tk.Tk()
    app Секундомер(master=root)
    app.mainloop() 
    Нужно добавить `tkinter` и у тебя будет GUI, а не просто консольный вывод.
    А как же без графона! Tkinter - это всегда зачёт. Спасибо, буду пробовать!

  9. Эй, если тебе нужно по-быстрому и без заморочек, можно воспользоваться time.perf_counter():

    Программный код:
    import time

    start 
    time.perf_counter()
    # Твой код или действия, которые надо замерить
    end time.perf_counter()
    print(
    f'Прошло {end - start} секунд'
    Простой и эффективный способ засечь время. Никаких заморочек!

  10. Цитата Сообщение от JuliaDancer
    Эй, если тебе нужно по-быстрому и без заморочек, можно воспользоваться time.perf_counter():

    Программный код:
    import time

    start 
    time.perf_counter()
    # Твой код или действия, которые надо замерить
    end time.perf_counter()
    print(
    f'Прошло {end - start} секунд'
    Простой и эффективный способ засечь время. Никаких заморочек!
    Вот это прямо как надо для быстрого теста. Без лишних движений, топчик! Спасибо!

Страница 1 из 2 12 ПоследняяПоследняя