中画了几个圆圈(按钮)QPainter
。
我们需要能够单独更改其中任何一个的颜色。
在这个玩具版本中,颜色变化是通过按下相应的热键引起的。
import sys
from PySide6.QtWidgets import *
from PySide6.QtCore import *
from PySide6.QtGui import *
class Main(QWidget):
def __init__(self, parent=None):
super(Main, self).__init__(parent)
self.state_button_1 = 0
self.state_button_2 = 0
self.state_button_3 = 0
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing, True)
painter.setPen(QPen(Qt.black, 2, Qt.SolidLine))
painter.setBrush(QBrush(Qt.red, Qt.SolidPattern))
painter.drawEllipse(50, 50, 20, 20)
painter.drawEllipse(30, 70, 20, 20)
painter.drawEllipse(70, 70, 20, 20)
def keyPressEvent(self, keyEvent):
key = keyEvent.key()
if key == Qt.Key_Q:
if self.state_button_1:
# меняем цвет кнопки (50, 50) на зелёный
self.state_button_1 = 0
print('кнопка 1 зелёная')
else:
# меняем цвет кнопки (50, 50) на красный
self.state_button_1 = 1
print('кнопка 1 красная')
elif key == Qt.Key_W:
if self.state_button_2:
# меняем цвет кнопки (30,70) на зелёный
self.state_button_2 = 0
print('кнопка 2 зелёная')
else:
# меняем цвет кнопки (30,70) на красный
self.state_button_2 = 1
print('кнопка 2 красная')
elif key == Qt.Key_E:
if self.state_button_3:
# меняем цвет кнопки (70, 70) на зелёный
self.state_button_3 = 0
print('кнопка 3 зелёная')
else:
# меняем цвет кнопки (70, 70) на красный
self.state_button_3 = 1
print('кнопка 3 красная')
if __name__ == '__main__':
app = QApplication(sys.argv)
w = Main()
w.show()
sys.exit(app.exec())
尝试这个:
更新
我不太明白你的实现,嗯,这是必要的——这是必要的。