Подскажите что не так, почему ошибка AttributeError: 'MainWindow' object has no attribute 'sidGreen'
Подскажите что не так, почему ошибка
AttributeError: 'MainWindow' object has no attribute 'sidGreen'
import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setupUI()
def setupUI(self):
self.setGeometry(550, 400, 500, 200)
self.setWindowTitle('Выбор цвета')
self.frmColor = QFrame(self)
self.frmColor.setGeometry(310, 10, 180, 180)
self.frmColor.setStyleSheet('background-color: rgb(0, 0, 0)')
self.sidRed = QSlider(Qt.Horizontal, self)
self.sidRed.setGeometry(10, 40, 280, 20)
self.sidRed.setRange(0, 255)
self.sidRed.valueChanged(self.resetColor())
self.lblRed = QLabel('Красный: 0', self)
self.lblRed.setGeometry(10, 10, 280, 20)
self.sidGreen = QSlider(Qt.Horizontal, self)
self.sidGreen.setGeometry(10, 100, 280, 20)
self.sidGreen.setRange(0, 255)
self.sidGreen.valueChanged(self.resetColor())
self.lblGreen = QLabel('Зеленый: 0', self)
self.lblGreen.setGeometry(10, 70, 280, 20)
self.sidBlue = QSlider(Qt.Horizontal, self)
self.sidBlue.setGeometry(10, 160, 280, 20)
self.sidBlue.setRange(0, 255)
self.sidBlue.valueChanged(self.resetColor())
self.lblBlue = QLabel('Синий: 0', self)
self.lblBlue.setGeometry(10, 130, 280, 20)
def resetColor(self):
red = self.sidRed.value()
green = self.sidGreen.value()
blue = self.sidBlue.value()
self.lblRed.setText('Красный:' + str(red))
self.lblGreen.setText('Зеленый:' + str(green))
self.lblBlue.setText('Синий:' + str(blue))
self.frmColor.setStyleSheet(f'background-color: rgb({red}, {green}, {blue})')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Вы не правильно подключаете подключите сигнал к слоту.
import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setupUI()
def setupUI(self):
self.setGeometry(550, 400, 500, 200)
self.setWindowTitle('Выбор цвета')
self.frmColor = QFrame(self)
self.frmColor.setGeometry(310, 10, 180, 180)
self.frmColor.setStyleSheet('background-color: rgb(0, 0, 0)')
self.sidRed = QSlider(Qt.Horizontal, self)
self.sidRed.setGeometry(10, 40, 280, 20)
self.sidRed.setRange(0, 255)
# self.sidRed.valueChanged(self.resetColor())
self.sidRed.valueChanged.connect(self.resetColor) # +++
self.lblRed = QLabel('Красный: 0', self)
self.lblRed.setGeometry(10, 10, 280, 20)
self.sidGreen = QSlider(Qt.Horizontal, self)
self.sidGreen.setGeometry(10, 100, 280, 20)
self.sidGreen.setRange(0, 255)
# self.sidGreen.valueChanged(self.resetColor())
self.sidGreen.valueChanged.connect(self.resetColor) # +++
self.lblGreen = QLabel('Зеленый: 0', self)
self.lblGreen.setGeometry(10, 70, 280, 20)
self.sidBlue = QSlider(Qt.Horizontal, self)
self.sidBlue.setGeometry(10, 160, 280, 20)
self.sidBlue.setRange(0, 255)
# self.sidBlue.valueChanged(self.resetColor())
self.sidBlue.valueChanged.connect(self.resetColor) # +++
self.lblBlue = QLabel('Синий: 0', self)
self.lblBlue.setGeometry(10, 130, 280, 20)
def resetColor(self):
red = self.sidRed.value()
green = self.sidGreen.value()
blue = self.sidBlue.value()
self.lblRed.setText('Красный:' + str(red))
self.lblGreen.setText('Зеленый:' + str(green))
self.lblBlue.setText('Синий:' + str(blue))
self.frmColor.setStyleSheet(f'background-color: rgb({red}, {green}, {blue})')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MainWindow()
ex.resize(700, 300)
ex.show()
sys.exit(app.exec_())
