Esempio n. 1
0
    def initUI(self):
        # Инициализация элементов GUI

        radio_button_circle = QRadioButton('Круг')
        radio_button_circle.setChecked(True)
        radio_button_square = QRadioButton('Квадрат')
        radio_button_triangle = QRadioButton('Треугольник')

        combo_box_color = QComboBox()
        combo_box_color.addItems(['Белый', 'Черный', 'Зеленый', 'Синий', 'Красный'])

        label_rotate = QLabel('Поворот')
        label_size = QLabel('Размер')
        label_move_y = QLabel('Перемещение: ось Y')
        label_move_x = QLabel('Перемещение: ось X')

        horizontal_slider_rotate = QSlider(Qt.Horizontal, self)
        horizontal_slider_rotate.setMaximum(360)

        horizontal_slider_size = QSlider(Qt.Horizontal, self)
        horizontal_slider_size.setProperty("value", 50)

        horizontal_slider_move_x = QSlider(Qt.Horizontal, self)
        horizontal_slider_move_x.setMaximum(500)
        horizontal_slider_move_x.setProperty("value", 0)

        horizontal_slider_move_y = QSlider(Qt.Horizontal, self)
        horizontal_slider_move_y.setMaximum(500)
        horizontal_slider_move_y.setProperty("value", 0)

        lcd_number_rotate = QLCDNumber()
        lcd_number_rotate.setSegmentStyle(QtWidgets.QLCDNumber.Flat)
        lcd_number_rotate.setProperty("intValue", 0)

        lcd_number_size = QLCDNumber()
        lcd_number_size.setSegmentStyle(QtWidgets.QLCDNumber.Flat)
        lcd_number_size.setProperty("intValue", 50)

        lcd_number_move_x = QLCDNumber()
        lcd_number_move_x.setSegmentStyle(QtWidgets.QLCDNumber.Flat)
        lcd_number_move_x.setProperty("intValue", 0)

        lcd_number_move_y = QLCDNumber()
        lcd_number_move_y.setSegmentStyle(QtWidgets.QLCDNumber.Flat)
        lcd_number_move_y.setProperty("intValue", 0)

        # Инициадизация графической сцены
        graphics_view = QGraphicsView()
        scene = QGraphicsScene()
        graphics_view.setScene(scene)

        # Применение варианта расположения элементов GUI
        grid = QGridLayout()
        grid.setSpacing(10)

        # Добавление элементов GUI
        grid.addWidget(radio_button_circle, 0, 0)
        grid.addWidget(label_rotate, 0, 1)
        grid.addWidget(horizontal_slider_rotate, 0, 2)
        grid.addWidget(lcd_number_rotate, 0, 3)

        grid.addWidget(radio_button_square, 1, 0)
        grid.addWidget(label_size, 1, 1)
        grid.addWidget(horizontal_slider_size, 1, 2)
        grid.addWidget(lcd_number_size, 1, 3)

        grid.addWidget(radio_button_triangle, 2, 0)
        grid.addWidget(label_move_x, 2, 1)
        grid.addWidget(horizontal_slider_move_x, 2, 2)
        grid.addWidget(lcd_number_move_x, 2, 3)

        grid.addWidget(combo_box_color, 3, 0)
        grid.addWidget(label_move_y, 3, 1)
        grid.addWidget(horizontal_slider_move_y, 3, 2)
        grid.addWidget(lcd_number_move_y, 3, 3)

        grid.addWidget(graphics_view, 4, 0, 4, 4)

        # Связь элементов GUI между собой
        horizontal_slider_size.valueChanged.connect(lcd_number_size.display)
        horizontal_slider_rotate.valueChanged.connect(lcd_number_rotate.display)
        horizontal_slider_move_x.valueChanged.connect(lcd_number_move_x.display)
        horizontal_slider_move_y.valueChanged.connect(lcd_number_move_y.display)

        def rotate():
            # получение значения со слайдера
            r = horizontal_slider_rotate.sliderPosition()
            # получение статуса радиокнопок и выполнение нужного действия
            if radio_button_circle.isChecked():
                circle1.rotate_circle(r)
            elif radio_button_square.isChecked():
                square1.rotate_square(r)
            elif radio_button_triangle.isChecked():
                triangle1.rotate_triangle(r)
            else:
                print('error')
            print('rotate: ', r)

        def move():
            # получение значения со слайдера
            m = horizontal_slider_move_x.sliderPosition()
            n = horizontal_slider_move_y.sliderPosition()
            # получение статуса радиокнопок и выполнение нужного действия
            if radio_button_circle.isChecked():
                circle1.move_circle(m, n)
            elif radio_button_square.isChecked():
                square1.move_square(m, n)
            elif radio_button_triangle.isChecked():
                triangle1.move_triangle(m, n)
            else:
                print('error')
            print('move: ', m, ' : ', n)

        def scale():
            # получение значения со слайдера
            s = horizontal_slider_size.sliderPosition()
            # получение статуса радиокнопок и выполнение нужного действия
            if radio_button_circle.isChecked():
                circle1.scale_circle(s)
            elif radio_button_square.isChecked():
                square1.scale_square(s)
            elif radio_button_triangle.isChecked():
                triangle1.scale_triangle(s)
            else:
                print('error')
            print('scale: ', s)

        def recolor():
            # получение значения с комбобокса
            color = combo_box_color.currentText()

            if color == 'Белый':
                r = 255
                g = 255
                b = 255
            elif color == 'Черный':
                r = 0
                g = 0
                b = 0
            elif color == 'Зеленый':
                r = 0
                g = 255
                b = 0
            elif color == 'Синий':
                r = 0
                g = 0
                b = 255
            elif color == 'Красный':
                r = 255
                g = 0
                b = 0
            else:
                r = 0
                g = 0
                b = 0

            # получение статуса радиокнопок и выполнение нужного действия
            if radio_button_circle.isChecked():
                circle1.recolor_circle(r, g, b)
            elif radio_button_square.isChecked():
                square1.recolor_square(r, g, b)
            elif radio_button_triangle.isChecked():
                triangle1.recolor_triangle(r, g, b)
            else:
                print('error')
            print('recolor: ', color)

        # Отрисовка

        square1 = Square(0, 0, 250, 250)
        square1.draw_square(scene)

        circle1 = Сircle(0, 0, 250, 250)
        circle1.draw_circle(scene)

        triangle1 = Triangle(0, 0, 0, 250, 250, 250)
        triangle1.draw_triangle(scene)

        # Активация функций слайдерами и комбобоксу
        horizontal_slider_rotate.valueChanged.connect(rotate)
        horizontal_slider_size.valueChanged.connect(scale)
        horizontal_slider_move_x.valueChanged.connect(move)
        horizontal_slider_move_y.valueChanged.connect(move)
        combo_box_color.currentTextChanged.connect(recolor)

        self.setLayout(grid)
        self.setGeometry(0, 0, 700, 700)
        self.setWindowTitle('Review')
        self.show()
Esempio n. 2
0
class UiGameFrame(QFrame):
    def __init__(self, parent):
        super(UiGameFrame, self).__init__(parent)
        self.setupUi()

    def setupUi(self):

        # 游戏界面
        self.setGeometry(QRect(10, 10, 671, 711))
        # self.setStyleSheet("background-image: url(./img/bg.bmp);")
        self.setFrameShape(QFrame.Box)
        self.setFrameShadow(QFrame.Sunken)
        self.setLineWidth(2)
        self.setObjectName("uiGameFrame")

        # 房间信息
        self.game_info = QLabel(self)
        self.game_info.setGeometry(QRect(20, 5, 631, 40))
        self.game_info.setObjectName("gameInfo")
        self.game_info.setScaledContents(True)
        self.game_info.setStyleSheet(
            'font-size:20px;font-weight:bold;')
        self.game_info.setAlignment(Qt.AlignCenter | Qt.AlignTop)

        # 游戏画面
        self.game_frame = QFrame(self)
        self.game_frame.setGeometry(QRect(80, 145, 504, 504))
        # self.game_frame.setStyleSheet("background-image: url(./img/game.bmp);")
        self.game_frame.setFrameShape(QFrame.Box)
        self.game_frame.setFrameShadow(QFrame.Plain)
        self.game_frame.setObjectName("gameFrame")

        # 对战
        self.vs_frame = QFrame(self)
        self.vs_frame.setGeometry(QRect(50, 55, 270, 80))
        self.vs_frame.setFrameShape(QFrame.StyledPanel)
        self.vs_frame.setFrameShadow(QFrame.Raised)
        self.vs_frame.setObjectName("vsFrame")
        # self.vs_frame.setStyleSheet("border:1px solid;")

        self.vs_user_image = QLabel(self.vs_frame)
        self.vs_user_image.setGeometry(QRect(5, 5, 70, 70))
        self.vs_user_image.setObjectName("vsUserImage")
        self.vs_user_image.setScaledContents(True)

        self.vs_user_info = QLabel(self.vs_frame)
        self.vs_user_info.setGeometry(QRect(80, 5, 120, 70))
        self.vs_user_info.setObjectName("vsUserInfo")

        self.lcdNumber_l = QLCDNumber(self.vs_frame)
        self.lcdNumber_l.setGeometry(QRect(205, 5, 60, 70))
        self.lcdNumber_l.setLineWidth(0)
        self.lcdNumber_l.setDigitCount(2)
        self.lcdNumber_l.setSegmentStyle(QLCDNumber.Flat)
        self.lcdNumber_l.setProperty("intValue", 20)
        self.lcdNumber_l.setObjectName("lcdNumber_2")

        self.vs_frame_r = QFrame(self)
        self.vs_frame_r.setGeometry(QRect(350, 55, 270, 80))
        self.vs_frame_r.setFrameShape(QFrame.StyledPanel)
        self.vs_frame_r.setFrameShadow(QFrame.Raised)
        self.vs_frame_r.setObjectName("vsFrameR")
        # self.vs_frame_r.setStyleSheet("border:1px solid;")

        self.lcdNumber_r = QLCDNumber(self.vs_frame_r)
        self.lcdNumber_r.setGeometry(QRect(5, 5, 60, 70))
        self.lcdNumber_r.setLineWidth(0)
        self.lcdNumber_r.setDigitCount(2)
        self.lcdNumber_r.setSegmentStyle(QLCDNumber.Flat)
        self.lcdNumber_r.setProperty("intValue", 20)
        self.lcdNumber_r.setObjectName("lcdNumber_3")

        self.vs_user_image_r = QLabel(self.vs_frame_r)
        self.vs_user_image_r.setGeometry(QRect(70, 5, 70, 70))
        self.vs_user_image_r.setObjectName("vsUserImageR")
        self.vs_user_image_r.setScaledContents(True)

        self.vs_user_info_r = QLabel(self.vs_frame_r)
        self.vs_user_info_r.setGeometry(QRect(145, 5, 120, 70))
        self.vs_user_info_r.setObjectName("vsUserInfoR")

        # 按钮区域
        self.cmd_frame = QFrame(self)
        self.cmd_frame.setGeometry(QRect(55, 655, 560, 47))
        self.cmd_frame.setFrameShape(QFrame.StyledPanel)
        self.cmd_frame.setFrameShadow(QFrame.Raised)
        self.cmd_frame.setObjectName("cmdFrame")
        # 开始按钮
        self.gameStartBtn = QPushButton(self.cmd_frame)
        self.gameStartBtn.setGeometry(QRect(10, 10, 100, 27))
        self.gameStartBtn.setObjectName("gameStartBtn")

        # 悔棋按钮
        self.gameUndoBtn = QPushButton(self.cmd_frame)
        self.gameUndoBtn.setGeometry(QRect(120, 10, 100, 27))
        self.gameUndoBtn.setObjectName("gameUndoBtn")

        # 认输按钮
        self.gameGiveupBtn = QPushButton(self.cmd_frame)
        self.gameGiveupBtn.setGeometry(QRect(230, 10, 100, 27))
        self.gameGiveupBtn.setObjectName("gameGiveupBtn")

        # 返回大厅
        self.gameReHallBtn = QPushButton(self.cmd_frame)
        self.gameReHallBtn.setGeometry(QRect(340, 10, 100, 27))
        self.gameReHallBtn.setObjectName("gameReHallBtn")

        # 设置
        self.gameSetBtn = QPushButton(self.cmd_frame)
        self.gameSetBtn.setGeometry(QRect(450, 10, 100, 27))
        self.gameSetBtn.setObjectName("gameSetBtn")

        self.retranslateUi()
        QMetaObject.connectSlotsByName(self)

    def retranslateUi(self):
        _translate = QCoreApplication.translate
        self.gameStartBtn.setText(_translate("MainWindow", "开始游戏"))
        self.gameUndoBtn.setText(_translate("MainWindow", "悔棋"))
        self.gameGiveupBtn.setText(_translate("MainWindow", "认输"))
        self.gameReHallBtn.setText(_translate("MainWindow", "返回大厅"))
        self.gameSetBtn.setText(_translate("MainWindow", "设置"))
Esempio n. 3
0
    def init_ui(self):
        self.buttonBox = QDialogButtonBox(self)
        self.buttonBox.setGeometry(-70, 260, 341, 32)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Ok)

        self.gridLayoutWidget_2 = QWidget(self)
        self.gridLayoutWidget_2.setGeometry(130, 20, 121, 91)

        self.gridLayout_2 = QGridLayout(self.gridLayoutWidget_2)
        self.gridLayout_2.setContentsMargins(0, 0, 0, 0)

        for i, row in enumerate([('Высота', 'Ширина', 'Мины'), *self.modes.values()]):
            for j, col in enumerate(row):
                label = QLabel(self.gridLayoutWidget_2)
                label.setText(str(col))
                label.setAlignment(QtCore.Qt.AlignCenter)
                self.gridLayout_2.addWidget(label, i, j, 1, 1)

        mode_label = QLabel(self)
        mode_label.setGeometry(QtCore.QRect(65, 20, 61, 18))
        mode_label.setText('Режим')
        mode_label.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignCenter |
                                QtCore.Qt.AlignVCenter)

        self.buttonGroup = QButtonGroup(self)
        checkbutton_list = []
        for n, key in enumerate([*self.modes.keys(), 'Особый']):
            rb = QRadioButton(self)
            self.buttonGroup.addButton(rb)
            rb.setGeometry(60, 45 + 25 * n, 71, 17)
            rb.setText(key)
            checkbutton_list.append(rb)

        self.easy, self.normal, self.hard, self.special = checkbutton_list

        lcd_list, slider_list = [], []
        for n, (minimum, maximum) in enumerate([(9, 21), (9, 46), (9, 27)]):
            offset = 40 * n
            slider = QSlider(self)
            slider.setEnabled(False)
            slider.setGeometry(70, 150 + offset, 248, 22)
            slider.setMinimum(minimum)
            slider.setMaximum(maximum)
            slider.setOrientation(QtCore.Qt.Horizontal)
            slider_list.append(slider)

            label = QLabel(self)
            label.setGeometry(22, 147 + offset, 47, 13)
            label.setText(['Высота', 'Ширина', 'Бомбы'][n])

            sublabel = QLabel(self)
            sublabel.setGeometry(22, 157 + offset, 41, 16)
            sublabel.setText(f'[{minimum}-{maximum}]')

            lcd = QLCDNumber(self)
            lcd.setGeometry(327, 148 + offset, 41, 21)
            lcd.setDigitCount(3)
            lcd.setSegmentStyle(QLCDNumber.Flat)
            lcd.setProperty("intValue", 9)
            lcd_list.append(lcd)

        self.bombs_label = sublabel
        self.height_slider, self.width_slider, self.bombs_slider = slider_list
        self.height_lcd, self.width_lcd, self.bombs_lcd = lcd_list

        self.buttonGroup.buttonClicked.connect(self.checked)
        self.mode = (9, 9, 10)
        self.setWindowTitle("Сложность")
        self.easy.setChecked(True)
        self.okay_clicked = False
        for slider in [self.bombs_slider, self.width_slider, self.height_slider]:
            slider.valueChanged.connect(self.recalculate_sliders)

        self.buttonBox.accepted.connect(self.accept)
        self.buttonBox.rejected.connect(self.reject)