Найти - Пользователи
Полная версия: вычисление времени по кнопке
Начало » Python для новичков » вычисление времени по кнопке
1
BCnuHy
Чувствую, что вопрос просто детский, но не могу выстроить логику вычисления времени по нажатию кнопки(в прикреплённом фото).
Пытаюсь сделать это через такую функцию:
 qtime = time.time()
qtime = int(qtime)
print(qtime) #выводит время начала работы программы
    def bt_push(self):
        global stime
        stime = 0
        ptime = time.time()
        ptime = int(ptime)
        stime = ptime - stime
        print(stime) #выводит время нажатия кнопки
        print(ptime) #выводит время нажатия кнопки
Я понимаю, что это происходит потому что каждый раз при выполнении функции я переприсваиваю stime значение ноль. Но без такого присвоения при нажатии на кнопку программа выключается с кодом exit code -1073740791 (0xC0000409)
Как выстроить логику такого вычисления?
m1r42
BCnuHy
stime = ptime - stime
 stime = ptime - stime
идентично
 stime = ptime - 0
Зачем?
BCnuHy
m1r42
Зачем?

Я и пишу, что не могу выстроить логику. Нужно чтобы stime менялось от нажатия к нажатию, но приходится присваивать ему значение “0” в функции. Если сделать это вне функции (сделать глобальной) , то вылетает ошибка при нажатии на кнопку
m1r42
BCnuHy
Я и пишу, что не могу выстроить логику. Нужно чтобы stime менялось от нажатия к нажатию, но приходится присваивать ему значение “0” в функции. Если сделать это вне функции (сделать глобальной) , то вылетает ошибка при нажатии на кнопку

Рабочий бы код посмотреть, а не на кусок.
BCnuHy
m1r42
Рабочий бы код посмотреть, а не на кусок.

Программа большая, кнопок на самом деле 8 штук, но требуется от них одно и то-же. Плюс идёт сохранение значений в exel файл, так что вывожу кусок кода, который касается именно этой задачи:

 import time
import pandas as pd
from PyQt5 import uic, QtCore, QtGui, QtWidgets, QtTest
from openpyxl import load_workbook, workbook
from openpyxl.styles import Font, Border, Side, Alignment
#Создание переменной с текущим временем от начала эпохи:
qtime = time.time()
qtime = int(qtime)
print(qtime)
class PySide2:
    pass
class Ui_MainWindow(object):
        # Функции нажатий на кнопку:
        def bt_push(self):
        global stime
        stime = 0
        ptime = time.time()
        ptime = int(ptime)
        stime = ptime - stime
        print(stime)
        print(ptime)
#Создание главного окна:
        def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1200, 800) #1200, 800
        MainWindow.setToolTipDuration(-5)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
 #Кнопки:
        #Перерыв:
        self.bt_pereriv = QtWidgets.QPushButton(self.centralwidget)
        self.bt_pereriv.setGeometry(QtCore.QRect(180, 120, 180, 70))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        self.bt_pereriv.setFont(font)
        self.bt_pereriv.setAutoFillBackground(False)
        self.bt_pereriv.setCheckable(True)
        self.bt_pereriv.setObjectName("bt_pereriv")
MainWindow.setCentralWidget(self.centralwidget)
    #Нажатие кнопок:
        self.retranslateUi(MainWindow)
        #Перерыв:
        self.bt_pereriv.pressed.connect(self.label_zadacha_name.clear)  # type: ignore
        self.bt_pereriv.pressed.connect(self.bt_push)
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
m1r42
А stime это и есть qtime? Что то я stime больше ни где не нашёл. И нафиг он тогда global?

BCnuHy
m1r42
А stime это и есть qtime? Что то я stime больше ни где не нашёл. И нафиг он тогда global?
qtime - quiet Time - время тишины. Время запуска программы в секундах от которого будем скакать, когда кнопка нажмётся в первый раз.
ptime - push Time - время нажатия. Время в секундах, когда кнопка была нажата.
stime - space Time - время расстояния. Разница в секундах между ptime и qtime, и между разными нажатия и, то есть ptime.
В прикреплённом файле первого сообщения схематично изображено чего я пытаюсь добиться
m1r42
  
qtime =int(qtime)
stime = qtime

stime = 0 убрать
 ptime = int(time.time())
stime = ptime - stime
print(stime) 
stime = ptime
Вроде так, пишу на телефоне, могу ошибку сделать. Жутко неудобно проверять код.
m1r42
 import time
import tkinter
qtime = stime = int(time.time())
def show():
    global stime
    ptime = int(time.time())
    print(ptime-stime)
    stime = ptime
    
root = tkinter.Tk()
but = tkinter.Button(root, text='time', command=show)
but.pack()
root.mainloop()
BCnuHy
m1r42
Вроде так, пишу на телефоне, могу ошибку сделать. Жутко неудобно проверять код.
Огромное спасибо!)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB