python蓝色_为什么这个代码只切换蓝色?(Python,PyQt)

由于某些原因,运行此代码只切换蓝色,而它应该分别切换每种颜色。在import sys

from PyQt5.QtWidgets import (QWidget, QPushButton,

QFrame, QApplication)

from PyQt5.QtGui import QColor

class Example(QWidget):

red = False

blue = False

green = False

buttons = []

def __init__(self):

super().__init__()

self.init_UI()

def init_UI(self):

self.col = QColor(0, 0, 0)

for x in range(0, 3):

self.buttons.append(QPushButton('Red' if x == 0 else ('Green' if x == 1 else 'Blue'), self))

self.buttons[x].setCheckable(True)

self.buttons[x].move(10, 10 + 50 * x)

self.buttons[x].clicked[bool].connect(lambda: self.set_color(x))

self.square = QFrame(self)

self.square.setGeometry(150, 20, 100, 100)

self.square.setStyleSheet("QWidget { background-color: %s }" %

self.col.name())

self.setGeometry(300, 300, 280, 170)

self.setWindowTitle('Toggle button')

self.show()

def set_color(self, button):

if button == 0:

if self.red == False:

self.red = True

self.col.setRed(255)

else:

self.red = False

self.col.setRed(0)

elif button == 1:

if self.green == False:

self.green = True

self.col.setGreen(255)

else:

self.green = False

self.col.setGreen(0)

else:

if self.blue == False:

self.blue = True

self.col.setBlue(255)

else:

self.blue = False

self.col.setBlue(0)

self.square.setStyleSheet("QFrame { background-color: %s }" %

self.col.name())

print(self.col.name())

if __name__ == '__main__':

app = QApplication(sys.argv)

ex = Example()

sys.exit(app.exec_())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值