PyQt5: Как увеличивать переменную каждую секунду с помощью таймеров? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть задание, где мне по сути нужно сделать копию 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...