def get_font(family, fallback=None): """Return a font of the requested family, using fallback as alternative. If a fallback is provided, it is used in case the requested family isn't found. If no fallback is given, no alternative is chosen and Qt's internal algorithms may automatically choose a fallback font. Parameters ---------- family : str A font name. fallback : str A font name. Returns ------- font : QFont object """ font = QtGui.QFont(family) # Check whether we got what we wanted using QFontInfo, since exactMatch() # is overly strict and returns false in too many cases. font_info = QtGui.QFontInfo(font) if fallback is not None and font_info.family() != family: font = QtGui.QFont(fallback) return font
def setNewStyleSheet(self, down_arrow_path): fontInfo = QtGui.QFontInfo(self.font()) family = fontInfo.family() font_size = fontInfo.pixelSize() # stylesheet because of a border on the arrow that I dislike stylesheet = ["QComboBox { color: black; font-size: " + str(font_size) + "px;", "font-family: " + family + "; margin: 0px 0px 1px 1px; border: 0px;", "padding: 1px 0px 0px 0px;}", # This (useless) line resolves a bug with the font color "QComboBox::drop-down { border: 0px; }" # Replaces the whole arrow of the combo box "QComboBox::down-arrow { image: url(" + down_arrow_path + ");", "width: 14px; height: 14px; }"] self.setStyleSheet(' '.join(stylesheet))