spyder是一款很不错的python集成开发环境, 但安装之后默认的背景颜色太亮, 很多人都喜欢编写代码时背景为暗色, 这样时间长了眼睛不会太累.
spyder中自带了一些暗背景, 在Tools -> Preferences -> Syntax Coloring里可以进行设置, 暗背景有Monokai, Solarized Dark, Spyder Dark, 这些背景普遍偏蓝色, 部分人看上去会有些不适应. 本篇博客会讲述怎样进行手动配色.
如果你使用Qt编写过C++程序,会感觉Qt Creator Dark这个主题很养眼, Spyder中没有这样的主题, 但我们可以手动进行配置:
1.首先新建一个darkflat.py文件, 复制以下代码粘贴到文件中, 其中SECONDARY是Text Editor的背景,这里设置的是(0x35, 0x35, 0x35), 自己也可以根据喜好修改. 建立好这个文件后将其放置到spyder的安装目录下,一般用anaconda安装的spyder目录为anaconda3/lib/python3.6/site-pakages/spyder/.
from PyQt5.QtGui import QPalette, QColor
WHITE = QColor(255, 255, 255)
BLACK = QColor(0, 0, 0)
RED = QColor(255, 0, 0)
PRIMARY = QColor(53, 53, 53)
SECONDARY = QColor(0x35, 0x35, 0x35)
TERTIARY = QColor(42, 130, 218)
def css_rgb(color, a=False):
"""Get a CSS `rgb` or `rgba` string from a `QtGui.QColor`."""
return ("rgba({}, {}, {}, {})" if a else "rgb({}, {}, {})").format(*color.getRgb())
class QDarkPalette(QPalette):
"""Dark palette for a Qt application meant to be used with the Fusion theme."""
def __init__(self, *__args):
super().__init__(*__args)
# Set all the colors based on the constants in globals
self.setColor(QPalette.Window, PRIMARY)
self.setColor(QPalette.WindowText, WHITE)
self.setColor(QPalette.Base, SECONDARY)
self.setColor(QPalette.AlternateBase, PRIMARY)
self.setColor(QPalette.ToolTipBase, WHITE)
self.setColor(QPalette.ToolTipText, WHITE)
self.setColor(QPalette.Text, WHITE)
self.setColor(QPalette.Button, PRIMARY)
self.setColor(QPalette.ButtonText, WHITE)
self.setColor(QPalette.BrightText, RED)
self.setColor(QPalette.Link, TERTIARY)
self.setColor(QPalette.Highlight, TERTIARY)
self.setColor(QPalette.HighlightedText, BLACK)
@staticmethod
def set_stylesheet(app):
"""Static method to set the tooltip stylesheet to a `QtWidgets.QApplication`."""
app.setStyleSheet("QToolTip {{"
"color: {white};"
"background-color: {tertiary};"
"border: 1px solid {white};"
"}}".format(white=css_rgb(WHITE), tertiary=css_rgb(TERTIARY)))
def set_app(self, app):
"""Set the Fusion theme and this palette to a `QtWidgets.QApplication`."""
app.setStyle("Fusion")
app.setPalette(self)
self.set_stylesheet(app)
2. 修改spyder/app/mainwindow.py文件, 打开该文件,找到initialize()函数,在这个函数return之前加入三行代码:
from spyder import darkflat
palette = darkflat.QDarkPalette()
palette.set_app(app)
保存退出, 重新打开Spyder, 其背景已经成为我们设置的暗色了.
3.修改完后我们编写代码时会发现有一个美中不足的地方就是有代码的部分的背景和其他部分的背景不一样, 这时我们只要修改一下配色方案即可, Tools -> Preferences -> Syntax Coloring, Edit Selected, 将Background修改为和上面的SECONDARY一致, 注意上面的QColor配色中可以选择十进制和十六进制,而这里默认的是十六进制(前面没有0x)
4. 将背景修改为暗色, 以前暗色的图标现在显示的不明显, 我们再将那些图标改为白色: 打开spyder/utils/icon_manager.py, 在最后的icon()函数的if语句return之前加入两行代码:
if 'color' not in kwargs.keys():
kwargs['color'] = 'white'
再次重启spyder, 这时原来为暗色的图标现在已经变为白色了.
如果这篇博客对您有用, 别忘了点个赞哦~~~