Форум сайта python.su
Чувствую, что вопрос просто детский, но не могу выстроить логику вычисления времени по нажатию кнопки(в прикреплённом фото).
Пытаюсь сделать это через такую функцию:
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) #выводит время нажатия кнопки
Отредактировано BCnuHy (Янв. 19, 2023 12:24:53)
Прикреплённый файлы:
IMG_20230119_131027.jpg (675,7 KБ)
Офлайн
BCnuHy
stime = ptime - stime
stime = ptime - stime
stime = ptime - 0
Отредактировано m1r42 (Янв. 19, 2023 12:50:19)
Офлайн
m1r42
Зачем?
Офлайн
BCnuHy
Я и пишу, что не могу выстроить логику. Нужно чтобы stime менялось от нажатия к нажатию, но приходится присваивать ему значение “0” в функции. Если сделать это вне функции (сделать глобальной) , то вылетает ошибка при нажатии на кнопку
Офлайн
m1r42
Рабочий бы код посмотреть, а не на кусок.
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)
Офлайн
А stime это и есть qtime? Что то я stime больше ни где не нашёл. И нафиг он тогда global?
Отредактировано m1r42 (Янв. 19, 2023 17:24:14)
Офлайн
m1r42qtime - quiet Time - время тишины. Время запуска программы в секундах от которого будем скакать, когда кнопка нажмётся в первый раз.
А stime это и есть qtime? Что то я stime больше ни где не нашёл. И нафиг он тогда global?
Отредактировано BCnuHy (Янв. 19, 2023 18:21:38)
Офлайн
qtime =int(qtime) stime = qtime
ptime = int(time.time()) stime = ptime - stime print(stime) stime = ptime
Отредактировано m1r42 (Янв. 19, 2023 20:57:11)
Офлайн
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()
Офлайн
m1r42Огромное спасибо!)
Вроде так, пишу на телефоне, могу ошибку сделать. Жутко неудобно проверять код.
Офлайн