Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/55: Рейтинг темы: голосов - 55, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 24.01.2018
Сообщений: 44
PyQt5

Обратный таймер, отправка данных в label

30.05.2019, 07:03. Показов 11669. Ответов 4

Студворк — интернет-сервис помощи студентам
Доброго времени суток, пересаживаюсь на python с с#, очень туговато пока особенно с pyqt, Задача: нужно создать таймер обратного отсчета и отправлять данные в label, передавать точное время в label я научился, а как теперь сделать вычитание - ума не приложу, вернее я понимаю алгоритм, но как правильно через синтаксис пайтона и pyqt - не знаю, подскажите люди добрые. сначала нужно в label записать 18:55:00, потом нужно начать отнимать по секунде, код основного тела
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import sys
from PyQt5 import QtWidgets
from PyQt5.QtCore import QTime, QTimer
from PyQt5.QtWidgets import QApplication, QLCDNumber
import design
 
class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWindow, QLCDNumber):
        def __init__(self, parent=None):
            super(ExampleApp, self).__init__(parent)
            self.setupUi(self)
            self.pushButton_3.clicked.connect(self.Start_T)
            self.pushButton_2.clicked.connect(self.Stop_T)
            self.pushButton.clicked.connect(self.Reset_T)
            # self.t = StringVar()
            self.lcdNumber.setNumDigits(8)
            self.lcdNumber.display('00:00:00')
 
        def Start_T(self):
                global count
                count = 0
                ##self.start_timer()
                timer = QTimer(self)
                timer.timeout.connect(self.showTime)
                timer.start(1000)
                self.showTime
                
 
        def Stop_T(self):
                global count
                count = 1
 
 
        def Reset_T(self):
                global count
                count = 1
                self.label.setText('00:00:00')
 
        def start_timer(self):
            global count
            self.timer()
 
        def showTime(self):
            time = QTime.currentTime()
            text = time.toString('hh:mm:ss')
            if (time.second() % 2) == 0:
                text = text[:2] + ' ' + text[3:]
            self.lcdNumber.setNumDigits(8)
            self.lcdNumber.display(text)
 
 
 
def main():
    app = QtWidgets.QApplication(sys.argv)  # Новый экземпляр QApplication
    window = ExampleApp()
    window.show()
    app.exec_()
 
if __name__ == '__main__':
    main()
код дизайна оконного приложения
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# -*- coding: utf-8 -*-
 
# Form implementation generated from reading ui file 'design.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!
 
from PyQt5 import QtCore, QtGui, QtWidgets
 
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(506, 524)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.calendarWidget = QtWidgets.QCalendarWidget(self.centralwidget)
        self.calendarWidget.setGeometry(QtCore.QRect(30, 260, 431, 221))
        self.calendarWidget.setObjectName("calendarWidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(310, 180, 161, 31))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(310, 100, 161, 31))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(310, 20, 161, 31))
        self.pushButton_3.setObjectName("pushButton_3")
        self.checkBox = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox.setGeometry(QtCore.QRect(30, 190, 70, 17))
        self.checkBox.setObjectName("checkBox")
        self.checkBox_2 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_2.setGeometry(QtCore.QRect(120, 190, 70, 17))
        self.checkBox_2.setObjectName("checkBox_2")
        self.checkBox_3 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_3.setGeometry(QtCore.QRect(210, 190, 70, 17))
        self.checkBox_3.setObjectName("checkBox_3")
        self.listWidget = QtWidgets.QListWidget(self.centralwidget)
        self.listWidget.setGeometry(QtCore.QRect(0, 0, 801, 601))
        self.listWidget.setObjectName("listWidget")
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setGeometry(QtCore.QRect(30, 110, 81, 22))
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox_2 = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox_2.setGeometry(QtCore.QRect(190, 110, 91, 22))
        self.comboBox_2.setObjectName("comboBox_2")
        self.comboBox_2.addItem("")
        self.comboBox_2.addItem("")
        self.comboBox_2.addItem("")
        self.lcdNumber = QtWidgets.QLCDNumber(self.centralwidget)
        self.lcdNumber.setGeometry(QtCore.QRect(30, 20, 251, 71))
        self.lcdNumber.setFrameShape(QtWidgets.QFrame.Box)
        self.lcdNumber.setSegmentStyle(QtWidgets.QLCDNumber.Filled)
        self.lcdNumber.setObjectName("lcdNumber")
        self.listWidget.raise_()
        self.calendarWidget.raise_()
        self.pushButton.raise_()
        self.pushButton_2.raise_()
        self.pushButton_3.raise_()
        self.checkBox.raise_()
        self.checkBox_2.raise_()
        self.checkBox_3.raise_()
        self.comboBox.raise_()
        self.comboBox_2.raise_()
        self.lcdNumber.raise_()
        MainWindow.setCentralWidget(self.centralwidget)
 
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Время движения"))
        self.pushButton.setText(_translate("MainWindow", "Сбросить"))
        self.pushButton_2.setText(_translate("MainWindow", "Остановить"))
        self.pushButton_3.setText(_translate("MainWindow", "Начать движение"))
        self.checkBox.setText(_translate("MainWindow", "60 км/ч"))
        self.checkBox_2.setText(_translate("MainWindow", "80 км/ч"))
        self.checkBox_3.setText(_translate("MainWindow", "120 км/ч"))
        self.comboBox.setItemText(0, _translate("MainWindow", "Чита"))
        self.comboBox_2.setItemText(0, _translate("MainWindow", "Карымское"))
        self.comboBox_2.setItemText(1, _translate("MainWindow", "Могоча"))
        self.comboBox_2.setItemText(2, _translate("MainWindow", "Амазар"))
Миниатюры
Обратный таймер, отправка данных в label  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.05.2019, 07:03
Ответы с готовыми решениями:

XmlHttpRequest запрос (отправка данных на label и ответ с сайта)
Имеется блокнот с неким словом на русском языке, к примеру, словом "мама". Нужно отправить это слово на сайт sozdik.kz(русско-казахский...

phpBB XmlHttpRequest запрос (отправка данных на label и ответ с сайта)
Имеется блокнот с неким словом на русском языке, к примеру, словом "мама". Нужно отправить это слово на сайт sozdik.kz(русско-казахский...

Обратный таймер
Как реализовать обратный таймер, при условии, что на форме должен быть textbox (или что-то подобное), в который вносится дата и уже от нее...

4
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
30.05.2019, 08:09
Цитата Сообщение от DanchY Посмотреть сообщение
global count
У вас тут класс, сделайте эту переменную полем, а время можно просто отнимать

Python
1
2
3
4
5
6
7
8
9
10
from datetime import datetime, timedelta
import time
 
beg = datetime.strptime(str('00:00:38'), '%H:%M:%S')
end = datetime.strptime(str('00:00:00'), '%H:%M:%S')
step =  timedelta(seconds=1)
while beg != end:
    beg = beg - step
    print(str(beg).split()[1])
    time.sleep(1)
0
0 / 0 / 0
Регистрация: 24.01.2018
Сообщений: 44
30.05.2019, 08:30  [ТС]
Да можно сделать и так, но запись пойдет в терминал, а как мне сделать отображение в lcdNumber, как правильно записывать изменения в gui?
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
30.05.2019, 08:53
Лучший ответ Сообщение было отмечено DanchY как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import sys
from PyQt5 import QtWidgets
from PyQt5.QtCore import QTime, QTimer
from PyQt5.QtWidgets import QApplication, QLCDNumber
import design
from datetime import datetime, timedelta
 
class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWindow, QLCDNumber):
        def __init__(self, parent=None):
            super(ExampleApp, self).__init__(parent)
            self.setupUi(self)
            self.pushButton_3.clicked.connect(self.Start_T)
            self.pushButton_2.clicked.connect(self.Stop_T)
            self.pushButton.clicked.connect(self.Reset_T)
            # self.t = StringVar()
            self.lcdNumber.setNumDigits(8)
            self.lcdNumber.display('00:00:00')
 
        def Start_T(self):
                global count
                count = 0
                ##self.start_timer()
                self.timer = QTimer(self)
                self.timer.timeout.connect(self.showTime)
                self.timer.start(1000)
                self.begin =  datetime.strptime(str(datetime.now().strftime('%Y-%m-%d %H:%M:%S').split()[1]), 
                                '%H:%M:%S')
                
 
        def Stop_T(self):
                count = 1
                self.timer.stop()
 
 
        def Reset_T(self):
                self.lcdNumber.display('00:00:00')
                self.timer.stop()
 
        def start_timer(self):
            self.timer()
 
        def showTime(self):
            if self.begin == datetime.strptime(str('00:00:00'), '%H:%M:%S'):
                self.timer.stop()
                return
            self.begin= self.begin - timedelta(seconds=1)
            self.lcdNumber.display(str(self.begin).split()[1])
 
 
 
def main():
    app = QtWidgets.QApplication(sys.argv)  # Новый экземпляр QApplication
    window = ExampleApp()
    window.show()
    app.exec_()
 
if __name__ == '__main__':
    main()
1
0 / 0 / 0
Регистрация: 24.01.2018
Сообщений: 44
30.05.2019, 09:15  [ТС]
Спасибо огромное друг, очень помог.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.05.2019, 09:15
Помогаю со студенческими работами здесь

Обратный таймер
как сделать видимый обратный таймер?

Обратный таймер
Всех привествую. На странице идет обновление каждые 5 минут при помощи php header refresh Подскажите пожалуйста простой скрипт обратного...

Обратный секундный таймер
Вечер добрый, уважаемые! Есть обратный таймер, который считает мин. и сек. <span id="timer"...

Обратный таймер времени
Допустим у меня есть div, в котором текст 13:00:00. Как мне сделать таймер на JS до 00:00:00?

Таймер обратный отсчет
Здравствуйте! Подскажите, как ускорить таймер? Задача такая: Написать таймер обратного отсчета (каждую секунду уменьшать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru