【发布时间】:2021-03-21 16:31:16
【问题描述】:
我尝试设置pushButton.checked()的背景颜色。如果按钮被启用并且pushButton.checked() == False 工作正常,它将背景颜色设置为styleSheet() 的disabled 颜色但是如果按钮被禁用并且pushButton.checked() == True 它不会改变背景颜色。
我已经尝试了this post 中的解决方法,但没有运气。其他一些靠近帖子链接。
下面的示例:使用下部按钮启用(禁用上部并使用上部按钮将其设置为选中/取消选中并使用下部按钮启用/禁用它以了解我的意思。背景应始终将其灰色按钮已禁用。
是否需要特殊设置或组合?
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.setMinimumSize(300,300)
self.pushButton1 = QPushButton("see css result", self)
self.pushButton1.setCheckable(True)
#self.pushButton1.setAutoFillBackground (True) # mentioned in
self.pushButton1.setStyleSheet(css_pushButton())
self.pushButton1.resize (100, 40)
self.pushButton1.move(50,50)
print("scc1:", self.pushButton1.styleSheet())
self.pushButton_control = QPushButton("Button Enabled", self)
self.pushButton_control.setCheckable(False)
self.pushButton_control.clicked.connect(self.pushButton_control_clicked)
self.pushButton_control.move(50,100)
self.pushButton_control.resize (100, 40)
def pushButton_control_clicked(self):
print("Checked:",self.pushButton1.isChecked())
if self.pushButton1.isEnabled():
print("set False")
self.pushButton1.setEnabled(False)
self.pushButton_control.setText(('DISABLED'))
else:
self.pushButton1.setEnabled(True)
self.pushButton_control.setText(('ENABLED'))
print("set True")
def css_pushButton():
css = '''
QPushButton {
font-size: 10px;
background-color: green;
color: black;
border: 2px green;
border-radius: 22px;
border-style: outset;
}
QPushButton:hover {
background: qradialgradient(
cx: 0.3, cy: -0.4, fx: 0.3, fy: -0.4,
radius: 1.35, stop: 0 grey, stop: 1 lightgray
);
}
QPushButton:enabled{
color: black;
font: 10px;
background: green;
background-color: red;
border: 1px black;
border-style: outset;
}
QPushButton:pressed {
color: white;
background: yellow;
}
QPushButton:disabled {
color: gray;
background-color: gray;
border: 1px black;
border-style: outset;
}
QPushButton:checked{
color: black;
font: 12px;
font: bold;
background-color: red;
border: 1px black;
border-style: outset;
}
QPushButton:!checked{
color: black;
font: 12px;
font: bold;
background-color: green;
border: 1px black;
border-style: outset;
}
'''
return css
if __name__ == "__main__":
app = QApplication (sys.argv)
prog = MainWindow()
prog.show ()
app.exec_ ()
【问题讨论】:
标签: python pyqt5 qtstylesheets