python QtWidgets.QPushButton点击变成灰色,其他的QtWidgets.QPushButton变成白色,如何实现
时间: 2024-10-08 11:16:01 浏览: 32
要在Python中使用PyQt5库实现当用户点击某个QPushButton时,该按钮变为灰色,而其他未被点击的QPushButton保持白色,可以按照以下步骤操作:
首先,你需要导入所需的模块并创建多个QPushButton实例:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
```
然后,在窗口初始化时,设置初始样式,并添加按钮到布局中:
```python
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.app = QApplication([])
layout = QVBoxLayout()
self.setLayout(layout)
# 创建多个QPushButton
buttons = [QPushButton("Button", self) for _ in range(3)]
for button in buttons:
button.clicked.connect(self.button_color_change)
layout.addWidget(button)
self.show()
def button_color_change(self, sender):
if sender == self.sender():
sender.setStyleSheet("background-color: gray;") # 点击按钮变灰
else:
for button in self.findChildren(QPushButton): # 非点击按钮恢复默认颜色
if button is not sender:
button.setStyleSheet("background-color: white;")
if __name__ == "__main__":
app = QApplication([])
window = MyWindow()
app.exec_()
```
在这个例子中,`button_color_change`函数会在按钮被点击时被触发。如果当前被点击的按钮就是发送信号的那个(`sender()`),则将其背景色设为灰色;否则遍历所有QPushButton,除了刚被点击的,将它们的背景色设回白色。
阅读全文