-
-
Notifications
You must be signed in to change notification settings - Fork 119
Open
Labels
Milestone
Description
Hi,
For some fonts that qtawesome has, family remains the default.
This may break the user application or qtawesome if the user adds a different version of the font.
For example, in the following code, if the different version of "Material Design Icon" by QtGui.QFontDatabase.addApplicationFont("materialdesignicons-webfont.ttf") is added, qtawesome icon disappers.
QtGui.QFontDatabase.addApplicationFont affects application-wide, so qtawesome's internal "Materinal Design Icon" seems to be overwritten by user's one.
I think it's a good idea to add a unique string (e.g "(qtawesome)") to all families of qtawesome's internal icons to avoid the confliction.
# -*- coding: utf-8 -*-
import sys
from qtpy import QtCore, QtWidgets, QtGui
import qtawesome as qta
class AwesomeExample(QtWidgets.QDialog):
def __init__(self):
super().__init__()
# Get Material Design icons by name
mdi6_icon = qta.icon('mdi6.account-wrench')
mdi6_button = QtWidgets.QPushButton(mdi6_icon, 'Material Design Icon # Version 6.3.95, ch=F189A')
#
# Add different version of 'Material Design Icon' from qtawesome's internal
# For example, if version 6.2.95 is added, mdi6.account-wrench (ch=F1809A) disappers
#
QtGui.QFontDatabase.addApplicationFont("materialdesignicons-webfont.ttf")
font = QtGui.QFont("Material Design Icon")
fontMetrics = QtGui.QFontMetrics(font)
print(f"font.key() : {font.key()}")
print(f"fontMetrics.inFontUcs4(0xF189A) : {fontMetrics.inFontUcs4(0xF189A)}")
grid = QtWidgets.QGridLayout()
grid.addWidget(mdi6_button, 0, 0)
self.setLayout(grid)
self.setWindowTitle('Awesome')
self.show()
def main():
app = QtWidgets.QApplication(sys.argv)
if hasattr(QtCore.Qt, 'AA_UseHighDpiPixmaps'):
app.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps)
QtCore.QTimer.singleShot(10000, app.exit)
_ = AwesomeExample()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
