Esempio n. 1
0
    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)
Esempio n. 3
0
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_()
Esempio n. 4
0
 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)
Esempio n. 5
0
    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)
Esempio n. 6
0
 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)
Esempio n. 7
0
            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())