Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 19, 2023 12:23:45

BCnuHy
Зарегистрирован: 2022-11-30
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

вычисление времени по кнопке

Чувствую, что вопрос просто детский, но не могу выстроить логику вычисления времени по нажатию кнопки(в прикреплённом фото).
Пытаюсь сделать это через такую функцию:

 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)
Как выстроить логику такого вычисления?

Отредактировано BCnuHy (Янв. 19, 2023 12:24:53)

Прикреплённый файлы:
attachment IMG_20230119_131027.jpg (675,7 KБ)

Офлайн

#2 Янв. 19, 2023 12:49:34

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

вычисление времени по кнопке

BCnuHy
stime = ptime - stime
 stime = ptime - stime
идентично
 stime = ptime - 0
Зачем?

Отредактировано m1r42 (Янв. 19, 2023 12:50:19)

Офлайн

#3 Янв. 19, 2023 13:03:15

BCnuHy
Зарегистрирован: 2022-11-30
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

вычисление времени по кнопке

m1r42
Зачем?

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

Офлайн

#4 Янв. 19, 2023 14:28:36

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

вычисление времени по кнопке

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

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

Офлайн

#5 Янв. 19, 2023 15:42:55

BCnuHy
Зарегистрирован: 2022-11-30
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

вычисление времени по кнопке

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_())

Отредактировано BCnuHy (Янв. 19, 2023 15:44:56)

Офлайн

#6 Янв. 19, 2023 17:21:38

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

вычисление времени по кнопке

А stime это и есть qtime? Что то я stime больше ни где не нашёл. И нафиг он тогда global?

Отредактировано m1r42 (Янв. 19, 2023 17:24:14)

Офлайн

#7 Янв. 19, 2023 18:19:58

BCnuHy
Зарегистрирован: 2022-11-30
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

вычисление времени по кнопке

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

Отредактировано BCnuHy (Янв. 19, 2023 18:21:38)

Офлайн

#8 Янв. 19, 2023 20:12:09

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

вычисление времени по кнопке

  
qtime =int(qtime)
stime = qtime

stime = 0 убрать
 ptime = int(time.time())
stime = ptime - stime
print(stime) 
stime = ptime
Вроде так, пишу на телефоне, могу ошибку сделать. Жутко неудобно проверять код.

Отредактировано m1r42 (Янв. 19, 2023 20:57:11)

Офлайн

#9 Янв. 20, 2023 07:57:53

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

вычисление времени по кнопке

 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()

Офлайн

#10 Янв. 21, 2023 19:37:58

BCnuHy
Зарегистрирован: 2022-11-30
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

вычисление времени по кнопке

m1r42
Вроде так, пишу на телефоне, могу ошибку сделать. Жутко неудобно проверять код.
Огромное спасибо!)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version