Как мне зациклить некоторую часть кода?
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 шт):
Автор решения: S. Nick
→ Ссылка
У вас очень тяжелая логика и ошибки, которые тяжело заметить.
Я не менял вашу логику, а только подправил некоторые ошибки, чтобы код как-то заработал. Вам есть еще над чем поработать.
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())

