所以我的应用程序有一个计时器,每隔几分钟就会提醒做几秒钟的事情。例如它倒计时 10 分钟,然后在接下来的 10 秒内我将拉伸,计时器将计时 10 秒。当这 10 秒结束时,它会再次重置为 10 分钟。
因此,如果第一个计时器用完,我希望它说“是时候伸展了”并显示一个 Windows Toast 通知。在 10 秒拉伸的第二个计时器结束后,我想显示另一个通知,上面写着“好的,你可以回去做你正在做的任何事情”。
这是应用程序:
这是代码:
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5 import QtCore
import sys
from win10toast import ToastNotifier
import itertools
DURATION_INT = 10
toaster = ToastNotifier()
TIME_CYCLER = itertools.cycle([10, 5]) # 10 minutes, 10 seconds
iterToast = itertools.cycle([toaster.show_toast("test1", "test1", duration=3, threaded=True), toaster.show_toast("test2", "test2", duration=3, threaded=True)])
def secs_to_minsec(secs: int):
mins = secs // 60
secs = secs % 60
minsec = f'{mins:02}:{secs:02}'
return minsec
class App(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.time_left_int = DURATION_INT
self.myTimer = QtCore.QTimer(self)
# App window
self.app = QApplication(sys.argv)
self.win = QMainWindow()
self.win.setGeometry(200, 200, 200, 200)
self.win.setWindowTitle("test")
# Widgets
self.titleLabel = QtWidgets.QLabel(self.win)
self.titleLabel.setText("Welcome to my app")
self.titleLabel.move(50,20)
self.timerLabel = QtWidgets.QLabel(self.win)
self.timerLabel.move(50,50)
self.timerLabel.setAlignment(QtCore.Qt.AlignCenter)
self.timerLabel.setStyleSheet("font: 10pt Helvetica")
self.startButton = QtWidgets.QPushButton(self.win)
self.startButton.setText("Start")
self.startButton.move(50,100)
self.startButton.clicked.connect(self.startTimer)
所以问题是这个cycle功能对我不起作用。每当我运行该应用程序时,它只显示第一个test1通知,并在每次时钟用完时重复。它甚至没有通过第二个通知循环,所以我想itertools可能不是我要找的东西。
任何帮助都会很棒:)
蛊毒传说
相关分类