Как мне зациклить некоторую часть кода?

Рейтинг: 2Ответов: 1Опубликовано: 14.05.2023
import sys
from PyQt6.QtWidgets import *
from PyQt6.QtCore import *
from PyQt6.QtGui import *
import random as ra


class MW(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Что-то новое')
        self.setMinimumSize(QSize(500, 500))
        self.setMaximumSize(QSize(700, 700))
        label = QLabel(self)
        label.setFixedSize(QSize(500,500))
        pixmap = QPixmap('Zakat1.jpeg')
        label.setPixmap(pixmap)
        global kno0
        kno0 = QPushButton('Приветствую :)', self)
        kno0.move(125,80)
        kno0.setFixedSize(QSize(250,50))
        kno0.setStyleSheet("font-size: 30px; background-color: None; color: white; font-family:Verdana, serif; border-radius: 25px")
        global kno1
        kno1 = QPushButton('Сложение', self)
        kno1.move(25,200)
        kno1.setFixedSize(QSize(200,50))
        kno1.setStyleSheet("font-size: 18px; background-color:gray; color: white; font-family:Verdana, serif")
        global kno2
        kno2 = QPushButton('Вычитание', self)
        kno2.move(25,300)
        kno2.setFixedSize(QSize(200,50))
        kno2.setStyleSheet("font-size: 18px; background-color:gray; color: white; font-family:Verdana, serif")
        global kno3
        kno3 = QPushButton('Умножение', self)
        kno3.move(275,200)
        kno3.setFixedSize(QSize(200,50))
        kno3.setStyleSheet("font-size: 18px; background-color:gray; color: white; font-family:Verdana, serif")
        global kno4
        kno4 = QPushButton('Степень', self)
        kno4.move(275,300)
        kno4.setFixedSize(QSize(200,50))
        kno4.setStyleSheet("font-size: 18px; background-color:gray; color: white; font-family:Verdana, serif")
        global inp
        inp = QLineEdit(self)
        inp.hide()
        global bally
        bally = 0
        self.zizi = 0
        kno1.clicked.connect(self.sum)

    def sum(self):
        self.a = ra.randint(1, 100)
        self.b = ra.randint(1, 100)
        self.summa = self.a + self.b
        self.text = str(self.a) + '+' + str(self.b)
        kno3.hide()
        kno4.hide()
        kno0.setText('Сложение')
        kno1.setText(str(bally))
        kno1.setFixedSize(QSize(50,50))
        kno1.move(225,150)
        kno1.setStyleSheet("font-size: 20px; background-color: None; color: white; font-family:Verdana, serif; border-radius: 25px")
        kno2.setText(self.text)
        kno2.setFixedSize(QSize(400,50))
        kno2.move(50,250)
        kno2.setStyleSheet("font-size: 20px; background-color: black; color: white; font-family:Verdana, serif; border-radius: 25px")
        inp.setVisible(True)
        inp.setFixedSize(QSize(200,50))
        inp.move(150,350)
        inp.setStyleSheet('font-size: 20px')
        inp.editingFinished.connect(self.get)

    def get(self):
        self.zizi = inp.text()
        self.zizi = int(self.zizi)
        if self.zizi == self.summa:
            bally =+ 10
            kno1.setText(str(bally))
        if self.zizi != self.summa:
            bally =- 10
            kno1.setText(str(bally))
        if bally < 0:
            kno0.hide()
            kno1.hide()
            inp.hide()
            kno2.setText('Вы проиграли')
        if bally == 100:
            kno0.hide()
            kno1.hide()
            inp.hide()
            kno2.setText('Вы выиграли)')  

                   
app = QApplication(sys.argv)
w = MW()
w.show()
app.exec()

Не обращайте внимания на то, что я отображаю текст на кнопках.
Мне нужно каким-то способом зациклить метод sum() и метод get(), до достижения 100 баллов.

Ответы

▲ 1Принят

У вас очень тяжелая логика и ошибки, которые тяжело заметить.

Я не менял вашу логику, а только подправил некоторые ошибки, чтобы код как-то заработал. Вам есть еще над чем поработать.

import sys
import random as ra
'''                                установите свои импорты
from PyQt6.QtWidgets import *
from PyQt6.QtCore import *
from PyQt6.QtGui import *
'''
from PyQt5.Qt import *


class MW(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Что-то новое')
        self.setMinimumSize(QSize(500, 500))
        self.setMaximumSize(QSize(700, 700))
        
        label = QLabel(self)
        label.setFixedSize(QSize(500,500))
        pixmap = QPixmap('lena.jpg')
        label.setPixmap(pixmap)

#        global kno0
        self.kno0 = QPushButton('Приветствую :)', self)
        self.kno0.move(125,80)
        self.kno0.setFixedSize(QSize(250,50))
        self.kno0.setStyleSheet("font-size: 30px; background-color: None; color: white; font-family:Verdana, serif; border-radius: 25px")

#        global kno1
        self.kno1 = QPushButton('Сложение', self)
        self.kno1.move(25,200)
        self.kno1.setFixedSize(QSize(200,50))
        self.kno1.setStyleSheet("font-size: 18px; background-color:gray; color: white; font-family:Verdana, serif")
        self.kno1.clicked.connect(self.sum)          # +

#        global kno2
        self.kno2 = QPushButton('Вычитание', self)
        self.kno2.move(25,300)
        self.kno2.setFixedSize(QSize(200,50))
        self.kno2.setStyleSheet("font-size: 18px; background-color:gray; color: white; font-family:Verdana, serif")

#        global kno3
        self.kno3 = QPushButton('Умножение', self)
        self.kno3.move(275,200)
        self.kno3.setFixedSize(QSize(200,50))
        self.kno3.setStyleSheet("font-size: 18px; background-color:gray; color: white; font-family:Verdana, serif")

#        global kno4
        self.kno4 = QPushButton('Степень', self)
        self.kno4.move(275,300)
        self.kno4.setFixedSize(QSize(200,50))
        self.kno4.setStyleSheet("font-size: 18px; background-color:gray; color: white; font-family:Verdana, serif")

#        global inp
        self.inp = QLineEdit(self)
        self.inp.editingFinished.connect(self.get)
        self.inp.hide()                                      

#        global bally
        self.bally = 0
        self.zizi = 0
#        self.kno1.clicked.connect(self.sum)
        
    def sum(self):
        self.inp.setFocus()                                      # +++
        
        a = ra.randint(1, 100)
        b = ra.randint(1, 100)
        self.summa = a + b
        self.text = f'{a}+{b}'
        
        self.kno3.hide()
        self.kno4.hide()
        
        self.kno0.setText('Сложение')
        
        self.kno1.setText(str(self.bally))
        self.kno1.setFixedSize(QSize(50,50))
        self.kno1.move(225,150)
        self.kno1.setStyleSheet("font-size: 20px; background-color: None; color: white; font-family:Verdana, serif; border-radius: 25px")

        self.kno2.setText(self.text)
        self.kno2.setFixedSize(QSize(400,50))
        self.kno2.move(50,250)
        self.kno2.setStyleSheet("font-size: 20px; background-color: black; color: white; font-family:Verdana, serif; border-radius: 25px")

        self.inp.setVisible(True)
        self.inp.setFixedSize(QSize(200,50))
        self.inp.move(150,350)
        self.inp.setStyleSheet('font-size: 20px')
        
#        self.inp.editingFinished.connect(self.get)
        
    def get(self):
        self.zizi = self.inp.text()

        if not self.zizi:                                         # +++
            return                                                # +++
            
        self.zizi = int(self.zizi)
        if self.zizi == self.summa:
#            self.bally =+ 10                  эту ошибку тяжело заметить
            self.bally += 10 
#            self.kno1.setText(str(self.bally))
        else:                                  # self.zizi != self.summa:
#            self.bally =- 10                  эту ошибку тяжело заметить
            self.bally -= 10            
#            self.kno1.setText(str(self.bally)) 
        self.kno1.setText(str(self.bally))                          # +++ 
            
        self.inp.clear()                                            # +++ 
        self.sum()                                                  # +++         

        if self.bally < 0:
            self.kno0.hide()
            self.kno1.hide()
            self.inp.hide()
            self.kno2.setText('Вы проиграли')
            
        elif self.bally == 100:
            self.kno0.hide()
            self.kno1.hide()
            self.inp.hide()
            self.kno2.setText('Вы выиграли)')    
        

if __name__ == '__main__':            
    app = QApplication(sys.argv)
    w = MW()
    w.show()
    sys.exit(app.exec())

введите сюда описание изображения

введите сюда описание изображения