예제 #1
0
class StarWidget(QWidget):
    # small or big
    size = ""

    def __init__(self, size, grade, parent=None):
        QWidget.__init__(self, parent)
        self.ui_init()
        self.size = size

        if self.size == "small":
            self.ui.star1.setStyleSheet("QLabel{background-image:url('res/star-small-2.png')}")
            self.ui.star2.setStyleSheet("QLabel{background-image:url('res/star-small-2.png')}")
            self.ui.star3.setStyleSheet("QLabel{background-image:url('res/star-small-2.png')}")
            self.ui.star4.setStyleSheet("QLabel{background-image:url('res/star-small-2.png')}")
            self.ui.star5.setStyleSheet("QLabel{background-image:url('res/star-small-2.png')}")
        elif self.size == "big":
            self.resize(98, 18)
            self.ui.star1.setGeometry(1, 1, 16, 16)
            self.ui.star2.setGeometry(21, 1, 16, 16)
            self.ui.star3.setGeometry(41, 1, 16, 16)
            self.ui.star4.setGeometry(61, 1, 16, 16)
            self.ui.star5.setGeometry(81, 1, 16, 16)
            self.ui.star1.setStyleSheet("QLabel{background-image:url('res/star-2.png')}")
            self.ui.star2.setStyleSheet("QLabel{background-image:url('res/star-2.png')}")
            self.ui.star3.setStyleSheet("QLabel{background-image:url('res/star-2.png')}")
            self.ui.star4.setStyleSheet("QLabel{background-image:url('res/star-2.png')}")
            self.ui.star5.setStyleSheet("QLabel{background-image:url('res/star-2.png')}")

        self.changeGrade(grade)

    def ui_init(self):
        self.ui = Ui_StarWidget()
        self.ui.setupUi(self)
        self.show()

    def changeGrade(self, grade):
        if self.size == "small":
            if grade > 0:
                self.ui.star1.setStyleSheet("QLabel{background-image:url('res/star-small-1.png')}")
            if grade > 1:
                self.ui.star2.setStyleSheet("QLabel{background-image:url('res/star-small-1.png')}")
            if grade > 2:
                self.ui.star3.setStyleSheet("QLabel{background-image:url('res/star-small-1.png')}")
            if grade > 3:
                self.ui.star4.setStyleSheet("QLabel{background-image:url('res/star-small-1.png')}")
            if grade > 4:
                self.ui.star5.setStyleSheet("QLabel{background-image:url('res/star-small-1.png')}")
        if self.size == "big":
            if grade > 0:
                self.ui.star1.setStyleSheet("QLabel{background-image:url('res/star-1.png')}")
            if grade > 1:
                self.ui.star2.setStyleSheet("QLabel{background-image:url('res/star-1.png')}")
            if grade > 2:
                self.ui.star3.setStyleSheet("QLabel{background-image:url('res/star-1.png')}")
            if grade > 3:
                self.ui.star4.setStyleSheet("QLabel{background-image:url('res/star-1.png')}")
            if grade > 4:
                self.ui.star5.setStyleSheet("QLabel{background-image:url('res/star-1.png')}")
예제 #2
0
 def ui_init(self):
     self.ui = Ui_StarWidget()
     self.ui.setupUi(self)
     self.show()
예제 #3
0
class StarWidget(QWidget):
    # small or big
    size = ''

    def __init__(self, size, grade, parent=None):
        QWidget.__init__(self, parent)
        self.ui_init()
        self.size = size

        if (self.size == 'small'):
            self.ui.star1.setStyleSheet(
                "QLabel{background-image:url('res/star-small-2.png')}")
            self.ui.star2.setStyleSheet(
                "QLabel{background-image:url('res/star-small-2.png')}")
            self.ui.star3.setStyleSheet(
                "QLabel{background-image:url('res/star-small-2.png')}")
            self.ui.star4.setStyleSheet(
                "QLabel{background-image:url('res/star-small-2.png')}")
            self.ui.star5.setStyleSheet(
                "QLabel{background-image:url('res/star-small-2.png')}")
        elif (self.size == 'big'):
            self.resize(98, 18)
            self.ui.star1.setGeometry(1, 1, 16, 16)
            self.ui.star2.setGeometry(21, 1, 16, 16)
            self.ui.star3.setGeometry(41, 1, 16, 16)
            self.ui.star4.setGeometry(61, 1, 16, 16)
            self.ui.star5.setGeometry(81, 1, 16, 16)
            self.ui.star1.setStyleSheet(
                "QLabel{background-image:url('res/star-2.png')}")
            self.ui.star2.setStyleSheet(
                "QLabel{background-image:url('res/star-2.png')}")
            self.ui.star3.setStyleSheet(
                "QLabel{background-image:url('res/star-2.png')}")
            self.ui.star4.setStyleSheet(
                "QLabel{background-image:url('res/star-2.png')}")
            self.ui.star5.setStyleSheet(
                "QLabel{background-image:url('res/star-2.png')}")

        self.changeGrade(grade)

    #
    #函数名:初始化界面
    #Function: init innterface
    #
    def ui_init(self):
        self.ui = Ui_StarWidget()
        self.ui.setupUi(self)
        self.show()

    #
    #函数名:更改等级
    #Function: change grade
    #
    def changeGrade(self, grade):
        if (self.size == 'small'):
            self.ui.star1.setStyleSheet(
                "QLabel{background-image:url('res/star-small-2.png')}")
            self.ui.star2.setStyleSheet(
                "QLabel{background-image:url('res/star-small-2.png')}")
            self.ui.star3.setStyleSheet(
                "QLabel{background-image:url('res/star-small-2.png')}")
            self.ui.star4.setStyleSheet(
                "QLabel{background-image:url('res/star-small-2.png')}")
            self.ui.star5.setStyleSheet(
                "QLabel{background-image:url('res/star-small-2.png')}")
            if (grade > 0):
                # add by kobe
                if (grade < 1):
                    self.ui.star1.setStyleSheet(
                        "QLabel{background-image:url('res/star-small-3.png')}")
                else:
                    self.ui.star1.setStyleSheet(
                        "QLabel{background-image:url('res/star-small-1.png')}")
            if (grade > 1):
                if (grade < 2):
                    self.ui.star2.setStyleSheet(
                        "QLabel{background-image:url('res/star-small-3.png')}")
                else:
                    self.ui.star2.setStyleSheet(
                        "QLabel{background-image:url('res/star-small-1.png')}")
            if (grade > 2):
                if (grade < 3):
                    self.ui.star3.setStyleSheet(
                        "QLabel{background-image:url('res/star-small-3.png')}")
                else:
                    self.ui.star3.setStyleSheet(
                        "QLabel{background-image:url('res/star-small-1.png')}")
            if (grade > 3):
                if (grade < 4):
                    self.ui.star4.setStyleSheet(
                        "QLabel{background-image:url('res/star-small-3.png')}")
                else:
                    self.ui.star4.setStyleSheet(
                        "QLabel{background-image:url('res/star-small-1.png')}")
            if (grade > 4):
                if (grade < 5):
                    self.ui.star5.setStyleSheet(
                        "QLabel{background-image:url('res/star-small-3.png')}")
                else:
                    self.ui.star5.setStyleSheet(
                        "QLabel{background-image:url('res/star-small-1.png')}")
        if (self.size == 'big'):
            self.ui.star1.setStyleSheet(
                "QLabel{background-image:url('res/star-2.png')}")
            self.ui.star2.setStyleSheet(
                "QLabel{background-image:url('res/star-2.png')}")
            self.ui.star3.setStyleSheet(
                "QLabel{background-image:url('res/star-2.png')}")
            self.ui.star4.setStyleSheet(
                "QLabel{background-image:url('res/star-2.png')}")
            self.ui.star5.setStyleSheet(
                "QLabel{background-image:url('res/star-2.png')}")
            if (grade > 0):
                if (grade < 1):
                    self.ui.star1.setStyleSheet(
                        "QLabel{background-image:url('res/star-3.png')}")
                else:
                    self.ui.star1.setStyleSheet(
                        "QLabel{background-image:url('res/star-1.png')}")
            if (grade > 1):
                if (grade < 2):
                    self.ui.star2.setStyleSheet(
                        "QLabel{background-image:url('res/star-3.png')}")
                else:
                    self.ui.star2.setStyleSheet(
                        "QLabel{background-image:url('res/star-1.png')}")
            if (grade > 2):
                if (grade < 3):
                    self.ui.star3.setStyleSheet(
                        "QLabel{background-image:url('res/star-3.png')}")
                else:
                    self.ui.star3.setStyleSheet(
                        "QLabel{background-image:url('res/star-1.png')}")
            if (grade > 3):
                if (grade < 4):
                    self.ui.star4.setStyleSheet(
                        "QLabel{background-image:url('res/star-3.png')}")
                else:
                    self.ui.star4.setStyleSheet(
                        "QLabel{background-image:url('res/star-1.png')}")
            if (grade > 4):
                if (grade < 5):
                    self.ui.star5.setStyleSheet(
                        "QLabel{background-image:url('res/star-3.png')}")
                else:
                    self.ui.star5.setStyleSheet(
                        "QLabel{background-image:url('res/star-1.png')}")
class DynamicStarWidget(QWidget, Signals):
    '''kobe test dynamic start'''
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        self.ui_init()
        self.grade = 0
        self.mouse_press = False

        self.ui.star1.installEventFilter(self)
        self.ui.star2.installEventFilter(self)
        self.ui.star3.installEventFilter(self)
        self.ui.star4.installEventFilter(self)
        self.ui.star5.installEventFilter(self)

        self.resize(98, 18)
        self.ui.star1.setGeometry(1, 1, 16, 16)
        self.ui.star2.setGeometry(21, 1, 16, 16)
        self.ui.star3.setGeometry(41, 1, 16, 16)
        self.ui.star4.setGeometry(61, 1, 16, 16)
        self.ui.star5.setGeometry(81, 1, 16, 16)

        self.init_start_style_sheet()

    def ui_init(self):
        self.ui = Ui_StarWidget()
        self.ui.setupUi(self)
        self.show()

    def init_start_style_sheet(self):
        self.ui.star1.setStyleSheet(
            "QLabel{background-image:url('res/star-2.png')}")
        self.ui.star2.setStyleSheet(
            "QLabel{background-image:url('res/star-2.png')}")
        self.ui.star3.setStyleSheet(
            "QLabel{background-image:url('res/star-2.png')}")
        self.ui.star4.setStyleSheet(
            "QLabel{background-image:url('res/star-2.png')}")
        self.ui.star5.setStyleSheet(
            "QLabel{background-image:url('res/star-2.png')}")

    # def enterEvent(self, event):
    #     pass
    #
    # def leaveEvent(self, event):
    #     pass

    def eventFilter(self, obj, event):
        #QEvent.MouseButtonPress and QEvent.MouseButtonRelease
        if (obj == self.ui.star1):
            if (event.type() == QEvent.Enter):
                if self.mouse_press == False:
                    self.init_start_style_sheet()
                    self.changeGrade(1)
            elif (event.type() == QEvent.Leave):
                if self.mouse_press:
                    pass
                    # self.mouse_press = False
                else:
                    self.init_start_style_sheet()
                    self.changeGrade(0)
            elif (event.type() == QEvent.MouseButtonPress
                  and self.mouse_press == False):
                self.mouse_press = True
                self.get_user_rating.emit(1)
            # elif(event.type() == QEvent.MouseButtonRelease):
            #     self.grade = 1
        elif (obj == self.ui.star2):
            if (event.type() == QEvent.Enter):
                if self.mouse_press == False:
                    self.init_start_style_sheet()
                    self.changeGrade(2)
            elif (event.type() == QEvent.Leave):
                if self.mouse_press:
                    pass
                    # self.mouse_press = False
                else:
                    self.init_start_style_sheet()
                    self.changeGrade(0)
            elif (event.type() == QEvent.MouseButtonPress
                  and self.mouse_press == False):
                self.mouse_press = True
                self.get_user_rating.emit(2)
            # elif(event.type() == QEvent.MouseButtonRelease):
            #     self.grade = 2
        elif (obj == self.ui.star3):
            if (event.type() == QEvent.Enter):
                if self.mouse_press == False:
                    self.init_start_style_sheet()
                    self.changeGrade(3)
            elif (event.type() == QEvent.Leave):
                if self.mouse_press:
                    pass
                    # self.mouse_press = False
                else:
                    self.init_start_style_sheet()
                    self.changeGrade(0)
            elif (event.type() == QEvent.MouseButtonPress
                  and self.mouse_press == False):
                self.mouse_press = True
                self.get_user_rating.emit(3)
            # elif(event.type() == QEvent.MouseButtonRelease):
            #     self.grade = 3
        elif (obj == self.ui.star4):
            if (event.type() == QEvent.Enter):
                if self.mouse_press == False:
                    self.init_start_style_sheet()
                    self.changeGrade(4)
            elif (event.type() == QEvent.Leave):
                if self.mouse_press:
                    pass
                    # self.mouse_press = False
                else:
                    self.init_start_style_sheet()
                    self.changeGrade(0)
            elif (event.type() == QEvent.MouseButtonPress
                  and self.mouse_press == False):
                self.mouse_press = True
                self.get_user_rating.emit(4)
            # elif(event.type() == QEvent.MouseButtonRelease):
            #     self.grade = 4
        elif (obj == self.ui.star5):
            if (event.type() == QEvent.Enter):
                if self.mouse_press == False:
                    self.init_start_style_sheet()
                    self.changeGrade(5)
            elif (event.type() == QEvent.Leave):
                if self.mouse_press:
                    pass
                    # self.mouse_press = False
                else:
                    self.init_start_style_sheet()
                    self.changeGrade(0)
            elif (event.type() == QEvent.MouseButtonPress
                  and self.mouse_press == False):
                self.mouse_press = True
                self.get_user_rating.emit(5)
            # elif(event.type() == QEvent.MouseButtonRelease):
            #     self.grade = 5
        # print self.grade
        return QObject.eventFilter(self, obj, event)

    def changeGrade(self, grade):
        if (grade > 0):
            self.ui.star1.setStyleSheet(
                "QLabel{background-image:url('res/star-1.png')}")
        if (grade > 1):
            self.ui.star2.setStyleSheet(
                "QLabel{background-image:url('res/star-1.png')}")
        if (grade > 2):
            self.ui.star3.setStyleSheet(
                "QLabel{background-image:url('res/star-1.png')}")
        if (grade > 3):
            self.ui.star4.setStyleSheet(
                "QLabel{background-image:url('res/star-1.png')}")
        if (grade > 4):
            self.ui.star5.setStyleSheet(
                "QLabel{background-image:url('res/star-1.png')}")

    def getUserGrade(self):
        return self.grade
예제 #5
0
 def ui_init(self):
     self.ui = Ui_StarWidget()
     self.ui.setupUi(self)
     self.show()