【发布时间】:2017-03-10 17:05:37
【问题描述】:
我想做一个绿色按钮。我这样做了:
self.detectButton.setStyleSheet("background: #00ff00")
这是在造型之前:
之后:
如您所见,颜色发生了变化,但圆角消失了。
如何设置颜色样式以防止角落丢失?
其次,有没有办法获得主题通用的“ok”按钮颜色?这在其他平台上看起来不一样。
【问题讨论】:
标签: qt pyqt qt5 pyqt5 qtstylesheets
我想做一个绿色按钮。我这样做了:
self.detectButton.setStyleSheet("background: #00ff00")
这是在造型之前:
之后:
如您所见,颜色发生了变化,但圆角消失了。
如何设置颜色样式以防止角落丢失?
其次,有没有办法获得主题通用的“ok”按钮颜色?这在其他平台上看起来不一样。
【问题讨论】:
标签: qt pyqt qt5 pyqt5 qtstylesheets
如果您想在所有平台上获得完全一致的结果,请不要使用样式表。其原因在this answer 中进行了解释。
如果您只需要设置背景颜色,请使用小部件的palette:
palette = self.detectButton.palette()
palette.setColor(QtGui.QPalette.Button, QtGui.QColor('#00ff00'))
self.detectButton.setPalette(palette)
似乎不太可能有一种系统的方法来生成在所有平台上都同样适用的颜色。可能您能做的最好的事情就是尝试调整可通过palette color roles 访问的系统颜色之一。
编辑:
我认为调色板方法是可靠的跨平台解决方案似乎是错误的。 QPalette 的 Qt 文档有以下内容:
警告:某些样式不会使用调色板进行所有绘图,因为 例如,如果他们使用本机主题引擎。这是这种情况 适用于 Windows XP、Windows Vista 和 OS X 样式。
因此,似乎甚至没有一种完全一致的跨平台方式来完成像更改背景颜色这样简单的事情。
【讨论】:
QtGui.QPalette.Window 作为角色。
palette.setColor(QtGui.QPalette.Window, QtGui.QColor('#00ff00'))而不是palette.setColor(QtGui.QPalette.Button, QtGui.QColor('#00ff00')),但还是不行:/
self.detectButton.setAutoFillBackground(True)。
我不熟悉 Python,但我假设它在您手动设置时删除了所有其他样式。
我想知道下面这样的方法是否可行?
self.detectButton.setStyleSheet("background: #00ff00; border:1px solid #ccc; border-radius: 3px;")
不过,它可能对多种样式有不同的语法。
【讨论】: