def do_paint(self, painter, option, index): text = unicode(index.data(Qt.DisplayRole) or '') font = QFont(option.font) font.setPointSize(QFontInfo(font).pointSize() * 1.5) font2 = QFont(font) font2.setFamily(text) system, has_latin = writing_system_for_font(font2) if has_latin: font = font2 r = option.rect if option.state & QStyle.State_Selected: painter.setPen(QPen(option.palette.highlightedText(), 0)) if (option.direction == Qt.RightToLeft): r.setRight(r.right() - 4) else: r.setLeft(r.left() + 4) painter.setFont(font) painter.drawText(r, Qt.AlignVCenter|Qt.AlignLeading|Qt.TextSingleLine, text) if (system != QFontDatabase.Any): w = painter.fontMetrics().width(text + " ") painter.setFont(font2) sample = QFontDatabase().writingSystemSample(system) if (option.direction == Qt.RightToLeft): r.setRight(r.right() - w) else: r.setLeft(r.left() + w) painter.drawText(r, Qt.AlignVCenter|Qt.AlignLeading|Qt.TextSingleLine, sample)
def do_paint(self, painter, option, index): text = str(index.data(Qt.DisplayRole) or '') font = QFont(option.font) font.setPointSize(QFontInfo(font).pointSize() * 1.5) font2 = QFont(font) font2.setFamily(text) system, has_latin = writing_system_for_font(font2) if has_latin: font = font2 r = option.rect if option.state & QStyle.State_Selected: painter.setPen(QPen(option.palette.highlightedText(), 0)) if (option.direction == Qt.RightToLeft): r.setRight(r.right() - 4) else: r.setLeft(r.left() + 4) painter.setFont(font) painter.drawText(r, Qt.AlignVCenter|Qt.AlignLeading|Qt.TextSingleLine, text) if (system != QFontDatabase.Any): w = painter.fontMetrics().width(text + " ") painter.setFont(font2) sample = QFontDatabase().writingSystemSample(system) if (option.direction == Qt.RightToLeft): r.setRight(r.right() - w) else: r.setLeft(r.left() + w) painter.drawText(r, Qt.AlignVCenter|Qt.AlignLeading|Qt.TextSingleLine, sample)
def create_winner_dialog(winner, user_choice, rand_choice): dia = QMessageBox() font = QFont() font.setFamily("Arial") font.setPointSize(14) dia.setFont(font) if (user_choice == 1): user_choice = "Rock" elif (user_choice == 2): user_choice = "Paper" elif (user_choice == 3): user_choice = "Scissors" if (rand_choice == 1): rand_choice = "Rock" elif (rand_choice == 2): rand_choice = "Paper" elif (rand_choice == 3): rand_choice = "Scissors" dia.setIcon(QMessageBox.Information) dia.setText("User Picked: " + str(user_choice) + "\n" + "Computer Picked: " + str(rand_choice)) dia.setInformativeText("Winner: " + str(winner)) dia.setWindowTitle("Winner") dia.setStandardButtons(QMessageBox.Ok) dia.exec_()
def __init__ (self,parent=None): super(Title,self).__init__(parent) self.setAlignment(QtCore.Qt.AlignCenter) font = QFont() #font.setFamily("Nyala") font.setFamily("Old English Text MT") font.setPointSize(24) self.setFont(font)
def set_button_style(self, attr_value_dict: dict): """ :param attr_value_dict: Available styles: 'color' - text color 'background' 'font' - font family 'font_size' 'bold' 'italic' 'underline' 'autoraise' - autoraise button 'on_remove' - handler of remove function, None if no need Example: button.set_button_style({'color':'magenta' , 'font_size': 18}) """ if not attr_value_dict: return style = '' if 'color' in attr_value_dict and attr_value_dict['color']: style += 'color: ' + attr_value_dict['color'] + ';' if 'background' in attr_value_dict: style += 'background-color: ' + attr_value_dict['background'] + ';' if style is not '': self.setStyleSheet('QToolButton {' + style + '}') font = QFont() if 'font' in attr_value_dict: font.setFamily(attr_value_dict['font']) if 'font_size' in attr_value_dict: font.setPointSize(attr_value_dict['font_size']) font.setBold(attr_value_dict.get('bold', False)) font.setItalic(attr_value_dict.get('italic', False)) font.setUnderline(attr_value_dict.get('underline', False)) self.setFont(font) self.setAutoRaise(attr_value_dict.get('autoraise', True)) self.remove = attr_value_dict.get('on_remove', None) if self.remove: # set button context menu policy self.setContextMenuPolicy(Qt.CustomContextMenu) self.customContextMenuRequested.connect(self.on_context_menu) # create context menu self.popMenu = QMenu(self) menu_action = QAction('Remove', self, triggered=self.remove) self.popMenu.addAction(menu_action)
def setup_ui_font(self): f = QFont(QApplication.font()) q = (f.family(), f.pointSize()) if iswindows: if q == ('MS Shell Dlg 2', 8): # Qt default setting # Microsoft recommends the default font be Segoe UI at 9 pt # https://msdn.microsoft.com/en-us/library/windows/desktop/dn742483(v=vs.85).aspx f.setFamily('Segoe UI') f.setPointSize(9) QApplication.setFont(f) else: if q == ('Sans Serif', 9): # Hard coded Qt settings, no user preference detected f.setPointSize(10) QApplication.setFont(f) f = QFontInfo(f) self.original_font = (f.family(), f.pointSize(), f.weight(), f.italic(), 100)
cmd = 'python demo_monitor.py -l' p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) (output, err) = p.communicate() p_status = p.wait() # Vong lap quet tung tep tin/ thu muc if (p_status == 0): data = json.loads(output.decode('ASCII'))['check_list'] for d in data: cmd = 'python demo_monitor.py -s ' + '"' + d[ 2] + '"' + " " + str(d[1]) p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) (output, err) = p.communicate() p_status = p.wait() time.sleep(3600) if __name__ == "__main__": app = QApplication(sys.argv) font = QFont() font.setPixelSize(13) font.setFamily(font.defaultFamily()) app.setFont(font) window = LoadingApp() window.show() sys.exit(app.exec_())
class WheelScene(QGraphicsScene): def __init__(self, radius=200, parent=None, categories=[], loglevel=logging.DEBUG): super(WheelScene, self).__init__(parent) self.logger = logs.build_logger(__name__, loglevel) self.loglevel = loglevel #super(TestWheelScene, self).__init__(parent) families = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] if len(categories) == 0: sector_names = [ "freespin", "bankruptcy", "dogs", "cats", "PC", "OP", "loseturn", "colors", "numbers", "states", "countries", "people" ] else: sector_names = categories self.radius = radius total = 0 set_angle = 0 count1 = 0 colours = [] total = sum(families) for count in range(len(families)): number = [] for count in range(3): number.append(random.randrange(0, 255)) colours.append(QColor(number[0], number[1], number[2])) for i, family in enumerate(families): # Max span is 5760, so we have to calculate corresponding span angle angle = round(float(family * 5760) / total) subangle = round(float((family * 5760) / total / 2)) subangle += 120 # ellipse = QGraphicsEllipseItem(0,0,400,400) ellipse = QGraphicsEllipseItem(0, 0, self.radius * 2, self.radius * 2) #ellipse.setPos(QPointF(0, 0)) # ellipse.setPos(ellipse.boundingRect().center()) #print(ellipse.rect().center()) #ellipse.setTransformOriginPoint(200, 200) # ellipse.setRect(-200,200,400,400) ellipse.setStartAngle(set_angle) ellipse.setSpanAngle(angle) ellipse.setBrush(colours[count1]) # https://stackoverflow.com/questions/3312016/text-in-a-qgraphicsscene text = QGraphicsTextItem() #text.setFont(QFont("Helvetica", 65)) #text.setTextWidth(20) # print("angle=%s, set_angle=%s, sector_name=%s" % (angle, set_angle, sector_names[i])) document = QtGui.QTextDocument() document.setDocumentMargin(0) text.setDocument(document) self.font = QFont() self.default_font_size = 14 self.font.setPointSize(self.default_font_size) self.font.setBold(True) self.font.setFamily("Helvetica") self.font.setCapitalization(True) text.setPlainText(textwrap.fill(sector_names[i], width=1)) text.setFont(self.font) # print("render_piece label=%s, textangle=%s sub_angle=%s, set_angle=%s, angle=%s" % # (sector_names[i], # ((set_angle+subangle)/5760)*360, # subangle, # set_angle, # angle)) #print("textpos=%s" % ellipse.rect().center()) reduction_factor = 0 while text.boundingRect().height() > self.radius - (self.radius * .01): # print("category=%s, real_height=%s, radius=%s" % (sector_names[i], # text.boundingRect().height(), # self.radius)) # print("trying changing reduction factor from %s to %s" % (reduction_factor, # reduction_factor + 1)) reduction_factor += 1 self.font.setPointSize(self.default_font_size - reduction_factor) text.deleteLater() text = None text = QGraphicsTextItem() text.setDocument(document) #text.setFont(QFont("Helvetica", 65- reduction_factor)) text.setPlainText(textwrap.fill(sector_names[i], width=1)) text.setFont(self.font) text.setZValue(2) if sector_names[i] == False: #scrap this part for now until we can figure out how to safely offset titles. # print("ellipse center=%s" % ellipse.rect().center()) hypotenuse = self.radius * .01 degree_subangle = (((set_angle + subangle) / 5760) * 360) degree_subangle += 90 degree_subangle = degree_subangle % 360 doTranslate = True if doTranslate: #math.cos(degree_subangle) = adjacent/hypotenuse x = math.cos(degree_subangle) * hypotenuse y = math.sin(degree_subangle) * hypotenuse extra = True if extra: if degree_subangle > 0. and degree_subangle < 90.: pass elif degree_subangle > 90 and degree_subangle < 180: pass elif degree_subangle > 180 and degree_subangle < 270: pass #y = -y elif degree_subangle > 270: pass target = ellipse.rect().center() target.setX(x + target.x()) target.setY(y + target.y()) # print("target=%s" % target) print( "do_move_text_offset cat=%s, offset=%s degree_subangle=%s, x=%s, y=%s" % (sector_names[i], target, degree_subangle, x, y)) text.setPos(target) else: text.setPos(ellipse.rect().center()) text.setPos(ellipse.rect().center()) self.logger.debug("ellipse rect: %s" % ellipse.rect()) text.setRotation((((set_angle + subangle) / 5760) * 360)) #text.setRotation(30) # set_angle+=1 set_angle += angle count1 += 1 self.addItem(ellipse) self.addItem(text) self.setSceneRect(0, 0, self.radius * 2, self.radius * 2) self.logger.debug("scenesize= %s" % self.sceneRect())