def make_combobox(choices):
combo = QtWidgets.QComboBox()
# combo.setMaximumWidth(200)
font = QtGui.QFont()
font.setPointSize(10)
combo.setFont(font)
for i, choice in enumerate(choices):
combo.addItem("")
combo.setItemText(i, choice)
return combo
python类QFont()的实例源码
def initTheme(self) -> None:
qApp.setStyle(VideoStyleDark() if self.theme == 'dark' else VideoStyleLight())
self.fonts = [
QFontDatabase.addApplicationFont(':/fonts/FuturaLT.ttf'),
QFontDatabase.addApplicationFont(':/fonts/NotoSans.ttc')
]
self.style().loadQSS(self.theme, self.parent.devmode)
QApplication.setFont(QFont('Noto Sans UI', 12 if sys.platform == 'darwin' else 10, 300))
BATS_messagebox.py 文件源码
项目:BATS-Bayesian-Adaptive-Trial-Simulator
作者: ContaTP
项目源码
文件源码
阅读 19
收藏 0
点赞 0
评论 0
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
# Click pos
self.clickPos = QtCore.QPoint(50, 50)
# App Icon
self.icon_Label = QtWidgets.QLabel()
self.icon_Label.setPixmap(QtGui.QPixmap(":/resources/bcts.png").scaled(QtCore.QSize(40, 40)))
self.icon_Label.setFixedWidth(40)
# Title font
self.title_font = QtGui.QFont("Segoe UI")
self.title_font.setPointSize(11)
self.title_font.setBold(True)
# Title
self.title_Label = QtWidgets.QLabel("")
self.title_Label.setFont(self.title_font)
self.title_Label.setAlignment(QtCore.Qt.AlignCenter)
#?Button
self.closeApp_btn = QtWidgets.QToolButton()
self.closeApp_btn.setIcon(QtGui.QIcon(":/resources/close.png"))
self.closeApp_btn.setObjectName("closeButton")
self.titlelayout = QtWidgets.QHBoxLayout()
self.titlelayout.addWidget(self.icon_Label)
self.titlelayout.addWidget(self.title_Label)
self.titlelayout.addWidget(self.closeApp_btn)
self.titlelayout.setSpacing(0)
self.titlelayout.setContentsMargins(5, 5, 5, 5)
# Stylesheet
self.setStyleSheet("QLabel{background:#ffffff; color:#859ba6; font-family:'Segoe UI'; font-size:12pt;} QToolButton{border:none;} QPushButton:hover{background:#6e66cc;border:1px solid #373366;} QToolButton:hover{background:#fa7064;}")
self.setLayout(self.titlelayout)
# Slots & signals
self.closeApp_btn.clicked.connect(parent.close)
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
# Add new font
self.titleFont = QtGui.QFont('Caviar Dreams', 20)
self.titleFont.setLetterSpacing(QtGui.QFont.AbsoluteSpacing, 2.0)
# Parent widget, application window
self.parent = parent
# Mouse
self.clickPos = QtCore.QPoint(50, 50)
# Layout
self.titleLayout = QtWidgets.QHBoxLayout()
# Icon
self.iconLabel = QtWidgets.QLabel()
self.iconLabel.setPixmap(QtGui.QPixmap(":/resources/bcts.png").scaled(QtCore.QSize(100, 100)))
self.iconLabel.setAlignment(QtCore.Qt.AlignCenter)
# Title text
self.titleLabel = QtWidgets.QLabel("BATS")
self.titleLabel.setFont(self.titleFont)
# Stylesheet
self.setStyleSheet("QLabel{color:#ffffff;}")
# Add widget
self.titleLayout.addWidget(self.iconLabel)
self.titleLayout.addWidget(self.titleLabel)
# Set layout
self.titleLayout.setContentsMargins(20, 10, 20, 0)
self.titleLayout.setSpacing(30)
self.titleLayout.setAlignment(QtCore.Qt.AlignCenter)
self.setLayout(self.titleLayout)
# Side Menu
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
# Customize widget
self.setObjectName("Option")
# Layout
optionLayout = QtWidgets.QHBoxLayout()
# Option font
optionFont = QtGui.QFont("Caviar Dreams")
optionFont.setPointSize(12)
optionFont.setBold(False)
optionFont.setLetterSpacing(QtGui.QFont.AbsoluteSpacing, 1.0)
# Set widgets
# Separator
optionSep = QtWidgets.QWidget()
optionSep.setStyleSheet("QWidget{background:#4da8e8;}")
optionSep.setFixedWidth(2)
# Doc button
docButton = QtWidgets.QPushButton()
docButton.setIcon(QtGui.QIcon(":/resources/doc.png"))
docButton.setIconSize(QtCore.QSize(40, 40))
docButton.setText("Documentation")
docButton.setFont(optionFont)
docButton.setCursor(QtCore.Qt.PointingHandCursor)
# Layout
optionLayout.addWidget(docButton, 10)
# self.optionLayout.setAlignment(QtCore.Qt.AlignCenter)
optionLayout.setContentsMargins(0, 0, 0, 0)
optionLayout.setSpacing(0)
optionLayout.setAlignment(QtCore.Qt.AlignCenter)
self.setLayout(optionLayout)
# Stylesheet
self.setStyleSheet("QWidget {margin: 0 0 0 0; padding: 0 0 0 0;} QPushButton{background:transparent; border:none; border-top: 2px solid #4da8e8; padding: 0 10px 0 10px; color: #ffffff; outline: none;} QPushButton:hover{background:#45c8dc;}")
# Actiond
docButton.clicked.connect(self.openDoc)
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
self.setupUi(self)
# Store plot
self.parent = parent
self.table_file = None
self.plot_file = {}
self.exportTable_flag = self.exportPlot_flag = 0
# Set font size amd color for log console
self.log_tabWidget.setCurrentIndex(0)
self.log_tabWidget.setTabIcon(0, QtGui.QIcon(":/resources/tab_log.png"))
self.log_tabWidget.setTabIcon(1, QtGui.QIcon(":/resources/tab_info_disabled.png"))
self.log_tabWidget.tabBar().setTabTextColor(0, QtGui.QColor("#4f8a10"))
self.log_tabWidget.tabBar().setStyleSheet("QTabBar:tab:selected{ border-color: #4f8a10;}")
font = QtGui.QFont("Segoe UI", 10)
self.logConsole.setFont(font)
self.configConsole.setFont(font)
self.configConsole.setTextColor(QtGui.QColor("#00529B"))
self.verticalHeaderFont = font
self.logConsole.setTextColor(NORMAL_LOG_COLOR)
# Link the stdout to log textedit
self.originalsys = sys.stdout
sys.stdout = StdOutStream()
# self.wheelfilter = WheelFilter()
# self.graph_comboBox.installEventFilter(self.wheelfilter)
# Set current index to the comboBox
# self.graph_comboBox.setCurrentIndex(-1)
# Action
self.log_tabWidget.currentChanged.connect(self.changeTab)
sys.stdout.textWritten.connect(self.writeLog)
self.logClear_btn.clicked.connect(self.clearLog)
# self.graph_comboBox.currentIndexChanged.connect(self.changeGraph)
self.tableExport_btn.clicked.connect(self.exportTable)
self.plotExport_btn.clicked.connect(self.exportPlot)
# Function for the log tab
def __init__(self, parent=None):
super().__init__(parent)
s = Settings()
browser_font_size = int(s.value('browser_font', 9))
self.title_font = QtGui.QFont('Open Sans Extrabold', browser_font_size)
self.summary_font = QtGui.QFont('Open Sans',
browser_font_size * 0.95,
QtGui.QFont.Bold)
self.title_font_metrics = QtGui.QFontMetrics(self.title_font)
self.summary_font_metrics = QtGui.QFontMetrics(self.title_font)
self.last_icon_size = self.parent().iconSize().height()
def placeholder_thumb_generator(title, size=150):
"""Returns a QPixmap of size with the first letter of each word in title"""
initials = ' '.join([x[0] for x in title.split(' ') if len(x) > 2])
key = 'placeholder' + initials
img = QtGui.QPixmapCache.find(key)
if img:
return img
qsize = QtCore.QSize(size, size)
circle_color = QtGui.QColor(50, 50, 50)
text_color = QtGui.QColor(75, 75, 75)
rect = QtCore.QRect(QtCore.QPoint(0, 0), QtCore.QPoint(size, size))
center = QtCore.QPoint(size / 2, size / 2)
img = QtGui.QPixmap(qsize)
img.fill(QtCore.Qt.transparent)
p = QtGui.QPainter(img)
p.setFont(QtGui.QFont('Open Sans', size / 4, weight=QtGui.QFont.Bold))
p.setBrush(QtGui.QBrush(circle_color))
p.setPen(circle_color)
p.setRenderHint(QtGui.QPainter.Antialiasing, True)
p.drawEllipse(center, size / 2 - 1, size / 2 - 1)
p.setPen(text_color)
p.drawText(rect, QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter, initials)
QtGui.QPixmapCache.insert(key, img)
return img
def show_indicator(self):
self.indicator = self.scene.addText(
'Loading', QtGui.QFont('Helvetica', 16, 1))
self.indicator.setDefaultTextColor(QtGui.QColor('red'))
viwport_center = self.ui.view.mapToScene(
self.ui.view.viewport().geometry().center())
self.indicator.setPos(viwport_center - self.indicator.boundingRect().center())
def __init__(self, stream, func, args, buffer_len, kill_signal,
parent=None):
super(MainWindow, self).__init__(parent)
self.feedback = QLabel()
self.feedback.setText("Waiting for feedback ...")
self.feedback.setAlignment(QtCore.Qt.AlignCenter)
font = QtGui.QFont()
font.setPointSize(24)
self.feedback.setFont(font)
self.layout = QVBoxLayout()
self.layout.addWidget(self.feedback)
self.setLayout(self.layout)
self.setWindowTitle("feedback")
self.resize(300, 200)
self.worker = Worker(stream=stream,
func=func,
args=args,
buffer_len=buffer_len,
kill_signal=kill_signal)
self.worker.refresh_signal.connect(self.update)
self.worker.start()
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(389, 239)
Dialog.setStyleSheet("font: 10pt \"Arial\";")
self.gridLayout = QtWidgets.QGridLayout(Dialog)
self.gridLayout.setObjectName("gridLayout")
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.gridLayout.addWidget(self.buttonBox, 1, 0, 1, 1)
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.label = QtWidgets.QLabel(Dialog)
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(10)
font.setItalic(False)
self.label.setFont(font)
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.label, 0, QtCore.Qt.AlignTop)
self.comboBox = QtWidgets.QComboBox(Dialog)
self.comboBox.setObjectName("comboBox")
self.verticalLayout.addWidget(self.comboBox)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout.addItem(spacerItem)
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout.addItem(spacerItem1)
self.label_2 = QtWidgets.QLabel(Dialog)
self.label_2.setObjectName("label_2")
self.verticalLayout.addWidget(self.label_2)
self.plainTextEditDescription = QtWidgets.QPlainTextEdit(Dialog)
self.plainTextEditDescription.setReadOnly(True)
self.plainTextEditDescription.setObjectName("plainTextEditDescription")
self.verticalLayout.addWidget(self.plainTextEditDescription)
self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1)
self.retranslateUi(Dialog)
self.buttonBox.accepted.connect(Dialog.accept)
self.buttonBox.rejected.connect(Dialog.reject)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def switch_to_text(self, text):
font = QFont()
font.setPointSize(self.__height_to_point(self.PIX.height()))
graphics_text_item = QGraphicsTextItem(text)
graphics_text_item.setFlag(QGraphicsItem.ItemIsMovable)
graphics_text_item.setFont(font)
self.scene().addItem(graphics_text_item)
graphics_text_item.setPos(
QPoint(self.item.boundingRect().x(), self.item.boundingRect().y()))
self.path = QPainterPath()
self.item = GraphicsPathItem()
self.scene().addItem(self.item)
def otherUIFont():
"""
Returns an auxiliary UI font.
"""
font = QFont()
pointSize = 9
if sys.platform == "win32":
font.setFamily("Segoe UI")
elif sys.platform == "darwin":
try:
platform
except NameError:
import platform
if platform.mac_ver()[0].startswith("10.10"):
font.setFamily("Lucida Grande")
pointSize = 12
elif sys.platform.startswith("linux"):
font.setFamily("Luxi Sans")
font.setPointSize(pointSize)
return font
# ----
# Keys
# ----
def setEditBoxFont(self):
font = QFont()
font.setPointSize(self.dlg.theme.editBoxFontSize)
self.setFont(font)
def set_rect(self, rect):
scale = config.get('display', 'id_font_scale')
bold = config.get('display', 'id_font_bold')
self._text.setFont(QFont('', rect.width()*0.08*scale))
self._text.setPos(rect.x(), rect.y() + 0.6*rect.height())
self._text.setDefaultTextColor(QColor(config.get('display', 'id_font_color')))
if self._display_mode == 0:
if bold:
self._text.setHtml('<b>P(' + str(self._id) + ')</b>')
else:
self._text.setHtml('P(' + str(self._id) + ')')
self._graphics_item.setRect(rect.x(), rect.y(), rect.width(), rect.height())
self._items[0].setRect(rect.x() + rect.width()/5, rect.y(), rect.width()/5, rect.height())
self._items[1].setRect(rect.x() + rect.width()/5 * 3, rect.y(), rect.width()/5, rect.height())
elif self._display_mode == 1:
self._text.setPlainText('')
self._graphics_item.setRect(rect.x(), rect.y(), rect.width(), rect.height())
self._items[0].setRect(rect.x() + rect.width()/5, rect.y(), rect.width()/5, rect.height())
self._items[1].setRect(rect.x() + rect.width()/5 * 3, rect.y(), rect.width()/5, rect.height())
def set_rect(self, rect):
if self._carried is not None:
rect = self._carried.get_rect()
scale = config.get('display', 'id_font_scale')
bold = config.get('display', 'id_font_bold')
self._text.setFont(QFont('', rect.width()*0.08*scale))
self._text.setPos(rect.x(), rect.y() + 0.4*rect.height())
self._text.setDefaultTextColor(QColor(config.get('display', 'id_font_color')))
if self._display_mode == 0:
if bold:
self._text.setHtml('<b>S(' + str(self._id) + ')</b>')
else:
self._text.setHtml('S(' + str(self._id) + ')')
self._graphics_item.setRect(rect.x() + 0.25*rect.width(),
rect.y() + 0.25*rect.height(),
rect.width()*0.5,
rect.height()*0.5)
self._graphics_carried.setRect(rect.x() + 0.325*rect.width(),
rect.y() + 0.325*rect.height(),
rect.width()*0.35,
rect.height()*0.35)
elif self._display_mode == 1:
self._text.setPlainText('')
self._graphics_item.setRect(rect.x() + 0.05*rect.width(),
rect.y() + 0.05*rect.height(),
rect.width()*0.9,
rect.height()*0.9)
self._graphics_carried.setRect(rect.x() + 0.125*rect.width(),
rect.y() + 0.125*rect.height(),
rect.width()*0.75,
rect.height()*0.75)
def set_rect(self, rect):
scale = config.get('display', 'id_font_scale')
bold = config.get('display', 'id_font_bold')
self._text.setFont(QFont('', rect.width()*0.08*scale))
self._text.setPos(rect.x(), rect.y() + 0.2*rect.height())
self._text.setDefaultTextColor(QColor(config.get('display', 'id_font_color')))
if self._display_mode == 0:
if bold:
self._text.setHtml('<b>R(' + str(self._id) + ')</b>')
else:
self._text.setHtml('R(' + str(self._id) + ')')
self._graphics_item.setRect(rect.x() + 0.25*rect.width(),
rect.y() + 0.25*rect.height(),
rect.width()*0.5,
rect.height()*0.5,)
elif self._display_mode == 1:
self._text.setPlainText('')
self._graphics_item.setRect(rect.x() + 0.05*rect.width(),
rect.y() + 0.05*rect.height(),
rect.width()*0.9,
rect.height()*0.9)
if self._carries is not None:
self._carries.set_rect(rect)
def set_rect(self, rect):
scale = config.get('display', 'id_font_scale')
bold = config.get('display', 'id_font_bold')
font = QFont('', rect.width()*0.08*scale)
self._text.setFont(font)
self._text.setPos(rect.x(), rect.y() + 0.6*rect.height())
self._text.setDefaultTextColor(QColor(config.get('display', 'id_font_color')))
if self._display_mode == 0:
ss = ''
if bold:
ss = '<b>'
for key in self._ids:
count = 0
for ii in self._ids[key]:
if count == 0:
ss = ss + '(' + key + ': ' + ii[0]
else:
ss = ss + ', ' + ii[0]
count += 1
ss = ss + ')\n'
if bold:
ss += '</b>'
self._text.setHtml(ss)
self._graphics_item.setRect(rect.x(), rect.y(), rect.width(), rect.height())
elif self._display_mode == 1:
self._text.setPlainText('')
self._graphics_item.setRect(rect.x(), rect.y(), rect.width(), rect.height())
def __init__(self, brown_object, family_name, size, weight, italic):
"""
Args:
brown_object (Brush): The object this interface belongs to
family_name (str): The name of the font family
size (Unit): The size of the font
weight (int or None): The font weight. If `None`,
a normal weight will be used.
italic (bool): Italicized or not
"""
super().__init__(brown_object)
self.family_name = family_name
self.size = size
self.weight = weight
self.italic = italic
self.qt_object = QtGui.QFont(
self.family_name,
GraphicUnit(self.size).value,
self.weight if self.weight is not None else -1,
self.italic)
self._qt_font_info_object = QtGui.QFontInfo(self.qt_object)
self._qt_font_metrics_object = QtGui.QFontMetricsF(
self.qt_object,
brown._app_interface.view)
######## PUBLIC PROPERTIES ########
def test_init_qt_attribute_transfer(self):
test_font = FontInterface(None, 'Bravura', MockUnit(12), 1, False)
assert(isinstance(test_font.qt_object, QtGui.QFont))
assert(test_font.qt_object.bold() is False)
assert(test_font.qt_object.italic() is False)
assert(test_font.qt_object.pointSize() == 6)
assert(test_font.qt_object.weight() == 1)