def init_font_matplotlib_qt(self):
''' Initialize font name list QFontComboBox.
Also adds font from matplotlib default fonts
'''
# Font database of qt
self.qtFontDatabase = QFontDatabase()
# Getting path of matplotlib ttf directory
mplDataPath = mpl.rcParams['datapath']
mplFontPath = os.path.join(mplDataPath, 'fonts')
mplTtfFontPath = os.path.join(mplFontPath, 'ttf')
# Building ttf files list
mplTtfList = []
for f in os.listdir(mplTtfFontPath):
if f.endswith('.ttf'):
mplTtfList.append(os.path.join(mplTtfFontPath, f))
# Getting name of each font from ttf files
mplFontNameList = [mplFontManager.FontProperties(fname=fname).get_name() for fname in mplTtfList]
# Getting name of each font from qt font database
qtFontNameListQtype = self.qtFontDatabase.families()
qtFontNameList = [ str(qtFont) for qtFont in qtFontNameListQtype ]
# Comparing and adding matplotlib font to qt font database
for i in range(len(mplFontNameList)):
matched = False
for qtFont in qtFontNameList:
if str(qtFont) == mplFontNameList[i]:
matched = True
if not matched:
self.qtFontDatabase.addApplicationFont(mplTtfList[i])
评论列表
文章目录