class QCustomLabel(QLabel): def __init__(self, text): super(QCustomLabel, self).__init__(text) self.font = QFont('Source Han Code JP Medium', 11) self.font.insertSubstitutions( 'Source Han Code JP Medium', ['Source Han Code JP N', '源ノ角ゴシック Code JP M', '源ノ角ゴシック Code JP N']) self.setFont(self.font) self.setAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignHCenter) self.setContentsMargins(-3, -1, -3, -1) self.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) self.fontScale = 1.0 def setFontFamily(self, face): self.font.setFamily(face) def setFontScale(self, scale): self.fontScale = scale def resizeEvent(self, evt): width = self.size().width() / len(self.text()) height = self.size().height() baseSize = 0 if width > height: baseSize = height else: baseSize = width self.font.setPixelSize(baseSize * self.fontScale) self.setFont(self.font)
def fontSans(self): sans = QFont('IPAexGothic') alternatives = ['Noto Sans CJK TC', 'Microsoft YaHei'] sans.insertSubstitutions('IPAexGothic', alternatives) sans.setStyleStrategy(QFont.PreferAntialias) return sans