У меня есть задание, где мне по сути нужно сделать копию Cook ie Clicker, и часть задания состоит в том, чтобы увеличивать количество кликов каждый интервал времени (я выбрал 1 секунду, потому что это проще) на определенную величину кликов. Я почти все сделал, за исключением того, что я не могу заставить эту часть работать, и уже попробовал много разных методов создания таймеров.
Код, который я использую, находится здесь:
Код таймера -
self.started = False
self.timer = QTimer(self)
self.timer.timeout.connect(self.updateCount)
self.timer.start(1000)
def clicked(self):
def updateCount():
if self.started:
self.timesClicked += 1
self.label.setText("Pats: " + str(self.timesClicked))
self.label.adjustSize()
self.timer.start(1000)
else:
self.started = True
for count in range(0,1):
self.timer.singleShot(self.timerDelay, updateCount())
Полный код -
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import time
import sys
class Clicker(QMainWindow):
def __init__(self):
super(Clicker, self).__init__()
self.setGeometry(500, 200, 500, 400)
self.timesClicked = 0
self.clicksPerSecond = 0
self.timerDelay = 1000
self.tool1Cost = 15
self.label = QLabel(self)
self.label.setStyleSheet("font: 12pt")
self.label.setText("Pats: " + str(self.timesClicked))
self.label.move(10, 120)
self.cpsLabel = QLabel(self)
self.cpsLabel.setStyleSheet("font: 12pt")
self.cpsLabel.setText("CPS: " + str(self.clicksPerSecond))
self.cpsLabel.move(10, 150)
self.button = QPushButton(self)
self.button.setStyleSheet("QPushButton{ background-image: url(cat_.jpg); }")
self.button.resize(100,120)
self.button.setText("Pet Me!")
self.button.clicked.connect(self.clicked)
self.tool1 = QPushButton(self)
self.tool1.resize(100, 30)
self.tool1.move(120, 0)
self.tool1.setText("Add Tool1. Cost: " + str(self.tool1Cost))
self.tool1.adjustSize()
self.tool1.clicked.connect(self.toolOne)
self.started = False
self.timer = QTimer(self)
self.timer.timeout.connect(self.updateCount)
self.timer.start(1000)
def clicked(self):
def updateCount():
if self.started:
self.timesClicked += 1
self.label.setText("Pats: " + str(self.timesClicked))
self.label.adjustSize()
self.timer.start(1000)
else:
self.started = True
for count in range(0,1):
self.timer.singleShot(self.timerDelay, updateCount())
def toolOne(self):
if self.timesClicked >= self.tool1Cost:
self.timesClicked -= self.tool1Cost
self.clicksPerSecond += 1
self.label.setText("Pats: " + str(self.timesClicked))
self.cpsLabel.setText("CPS: " + str(self.clicksPerSecond))
def window():
app = QApplication(sys.argv)
win = Clicker()
win.show()
sys.exit(app.exec_())
window()