Пример #1
0
    def initUI(self, parent):
        print("Parent: ")
        print(type(parent))
        print(parent)

        frame = QFrame()
        # frame.setStyleSheet("background-color: rgb(30, 45, 66);")
        frame.setFrameShape(QFrame.StyledPanel)
        frame.setFrameShadow(QFrame.Raised)
        frame.setFixedWidth(250)
        frame.setFixedHeight(50)

        self.food_label = QLabel()
        self.food_label.setText(parent[0])

        self.food_price_label = QLabel()
        self.food_price_label.setText(str(parent[1]))

        test_layout = QHBoxLayout(frame)
        test_layout.addWidget(self.food_label)
        test_layout.addStretch()
        test_layout.addWidget(self.food_price_label)

        layout = QVBoxLayout()
        layout.addWidget(frame)

        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        self.setLayout(layout)
        # self.resize(250, 50)
        # self.setContentsMargins(0, 0, 0, 0)
        # self.setGeometry(QRect(0, 0, 450, 50))
Пример #2
0
def add_frame(widget,
              layout=VERTICAL,
              height=None,
              width=None,
              name=None,
              stylesheet=None,
              t_m=0,
              b_m=0,
              l_m=0,
              r_m=0,
              space=0):
    section_frame = QFrame(widget)
    if height:
        section_frame.setFixedHeight(height)
    if width:
        section_frame.setFixedWidth(width)
    if stylesheet:
        section_frame.setStyleSheet(stylesheet)
    if name:
        section_frame.setObjectName(name)

    section_layout = add_layout(section_frame,
                                layout,
                                t_m=t_m,
                                b_m=b_m,
                                l_m=l_m,
                                r_m=r_m,
                                space=space)

    return section_frame, section_layout
    def initUI(self):
        frame = QFrame()
        frame.setStyleSheet("background-color: rgb(30, 45, 66);")
        frame.setFrameShape(QFrame.StyledPanel)
        frame.setFrameShadow(QFrame.Raised)
        frame.setFixedWidth(200)
        frame.setFixedHeight(150)

        main_label = QLabel(frame)
        main_label.setAlignment(Qt.AlignCenter)
        main_label.setGeometry(QRect(40, 10, 120, 41))
        main_label.setStyleSheet("font: 75 28pt \"MS Shell Dlg 2\";\n"
                                 "color: rgb(255, 255, 255);\n"
                                 "font: 36pt \"MS Shell Dlg 2\";")
        main_label.setText("Orders")

        data = self.get_orders()

        sales = QLabel(frame)
        sales.setAlignment(Qt.AlignCenter)
        sales.setGeometry(QRect(40, 60, 120, 41))
        sales.setStyleSheet("font: 75 18pt \"MS Shell Dlg 2\";\n"
                            "color: rgb(255, 255, 255);\n"
                            "font: 20pt \"MS Shell Dlg 2\";")
        sales.setText(str(data))

        layout = QVBoxLayout()
        layout.addWidget(frame)

        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        self.setLayout(layout)
        self.setGeometry(QRect(30, 5, 200, 150))
Пример #4
0
    def __init__(self, dispositivoCamara, parent=None):
        super(Widgets, self).__init__(parent)

        self.parent = parent

        self.estadoFoto = False
        self.byteArrayFoto = QByteArray()

        # ==========================================================

        frame = QFrame(self)
        frame.setFrameShape(QFrame.Box)
        frame.setFrameShadow(QFrame.Sunken)
        frame.setFixedWidth(505)
        frame.setFixedHeight(380)
        frame.move(10, 10)

        # Instancias
        self.paginaVisor = QVideoWidget()
        self.paginaVisor.resize(500, 375)

        self.visor = QCameraViewfinder(self.paginaVisor)
        self.visor.resize(500, 375)

        self.labelFoto = QLabel()
        self.labelFoto.setAlignment(Qt.AlignCenter)
        self.labelFoto.resize(500, 375)

        # QStackedWidget
        self.stackedWidget = QStackedWidget(frame)
        self.stackedWidget.addWidget(self.paginaVisor)
        self.stackedWidget.addWidget(self.labelFoto)
        self.stackedWidget.resize(500, 375)
        self.stackedWidget.move(2, 2)

        # ======================== BOTONES =========================

        self.buttonTomarFoto = QPushButton("Tomar foto", self)
        self.buttonTomarFoto.resize(110, 26)
        self.buttonTomarFoto.move(525, 10)

        self.buttonEliminarFoto = QPushButton("Eliminar foto", self)
        self.buttonEliminarFoto.resize(110, 26)
        self.buttonEliminarFoto.move(525, 50)

        self.buttonGuardarFoto = QPushButton("Guardar foto", self)
        self.buttonGuardarFoto.resize(110, 26)
        self.buttonGuardarFoto.move(525, 82)

        # ======================== EVENTOS =========================

        self.buttonTomarFoto.clicked.connect(self.tomarFoto)
        self.buttonEliminarFoto.clicked.connect(self.eliminarFoto)
        self.buttonGuardarFoto.clicked.connect(self.guardarFoto)

        # ================== FUNCIONES AUTOMÁTICAS =================

        self.setCamara(dispositivoCamara)
Пример #5
0
    def __init__(self, parent=None):
        super(Main_Ayuda, self).__init__(parent)
        self.setWindowTitle("EXADATA (AYUDA)")
        self.setFixedSize(800, 600)
        self.setWindowIcon(QIcon("icono.jpg"))

        # FRAME
        paleta = QPalette()
        paleta.setColor(QPalette.Background, QColor(51, 0, 102))

        frame = QFrame(self)
        frame.setFrameShape(QFrame.NoFrame)
        frame.setFrameShadow(QFrame.Sunken)
        frame.setAutoFillBackground(True)
        frame.setPalette(paleta)
        frame.setFixedWidth(800)
        frame.setFixedHeight(100)
        frame.move(0, 0)

        labelIcono = QLabel(frame)
        labelIcono.setFixedWidth(65)
        labelIcono.setFixedHeight(65)
        labelIcono.setPixmap(
            QPixmap("icono.jpg").scaled(65, 65, Qt.KeepAspectRatio,
                                        Qt.SmoothTransformation))
        labelIcono.move(10, 28)

        fuenteTitulo = QFont()
        fuenteTitulo.setPointSize(25)
        fuenteTitulo.setBold(True)

        labelTitulo = QLabel("<font color='white'>EXADATA</font>", frame)
        labelTitulo.setFont(fuenteTitulo)
        labelTitulo.move(85, 30)

        fuenteSubtitulo = QFont()
        fuenteSubtitulo.setPointSize(13)

        labelSubtitulo = QLabel("<font color='white'>Análisis de Tweets ",
                                frame)
        labelSubtitulo.setFont(fuenteSubtitulo)
        labelSubtitulo.move(85, 68)

        # LOGO
        self.centralwidget = QtWidgets.QWidget(self)
        self.setCentralWidget(self.centralwidget)

        # CUADRO TEXTO
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setGeometry(QtCore.QRect(10, 110, 780, 480))
Пример #6
0
def add_config_box(widget, title, box_width=200):
    box = QFrame(widget)
    box.setFixedWidth(box_width)
    box_layout = add_layout(box, HORIZONTAL, l_m=11, r_m=11)

    title = add_label(box, title, align=Qt.AlignVCenter)
    box_layout.addWidget(title)

    spacer = QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Minimum)
    box_layout.addItem(spacer)

    value = add_label(box, "", align=Qt.AlignVCenter)
    box_layout.addWidget(value)

    return box
Пример #7
0
class GameWidget(QFrame):
    def __init__(self):
        super().__init__()
        self.initParameters()

    def initParameters(self):
        #Crea un Layout horizontal que tendrá tres columnas
        self.horizontalBox = QHBoxLayout()
        #Columna 1 Informacion del Jugador 1
        self.player1Label = self.createPlayerLabel("Jugador 1",
                                                   self.horizontalBox)
        #Columna 2 zona del tablero del juego
        self.boardSpace = QFrame()
        self.boardSpace.setStyleSheet(
            'background-image: url(/home/yeison/Projects/Python/TicTacToe/src/Interfaz/tablero.png);'
            "background-repeat: no-repeat;"
            "background-position:center;")
        self.boardSpace.setFixedWidth(400)

        self.verticalBox = QVBoxLayout()
        """self.board = QLabel()
        self.boardPixmap = QPixmap('/home/yeison/Projects/Python/TicTacToe/src/Interfaz/tablero.png')
        self.board.setPixmap(self.boardPixmap)
        self.board.setAlignment(Qt.AlignCenter)
        
        

        self.verticalBox.addWidget(self.board)
        self.boardSpace.setLayout(self.verticalBox)"""

        #self.horizontalBox.addWidget(self.board)
        self.horizontalBox.addWidget(self.boardSpace)
        #Columna 3 Informacion del Jugador 2
        self.player2Label = self.createPlayerLabel("Jugador 2",
                                                   self.horizontalBox)
        #Agrega el Layout al QFrame
        self.setLayout(self.horizontalBox)
        #Muestra el QFrame
        self.show()

    #Funcion que crea el Label un jugador
    def createPlayerLabel(self, label, box):
        l = QLabel()
        l.setText(label)
        l.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
        l.setAlignment(Qt.AlignHCenter)
        box.addWidget(l)
        return l
Пример #8
0
class RecentPanel(QFrame):
    def __init__(self, appController, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.appController = appController

        self.layout = layoutUtil.createLayout(LayoutType.VERTICAL, self)
        self.layout.addWidget(self.createTitle())
        self.layout.addWidget(self.createCardHolder())
        self.refreshList()
        self.appController.sequenceLoaded.connect(self.refreshList)
        self.appController.sequenceOrderUpdated.connect(self.refreshList)

    def createTitle(self):
        title = QLabel("Recent Sequences")
        title.setProperty("class", "titleText")
        return title

    def createCardHolder(self):
        scrollArea = QScrollArea()
        self.cardList = QFrame()

        self.listLayout = layoutUtil.createLayout(LayoutType.VERTICAL,
                                                  self.cardList)
        self.cardList.setObjectName("SequenceHolder")

        scrollArea.setWidget(self.cardList)
        scrollArea.setWidgetResizable(True)
        scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        scrollArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        scrollArea.verticalScrollBar().setSingleStep(10)
        QScroller.grabGesture(scrollArea.viewport(),
                              QScroller.LeftMouseButtonGesture)
        return scrollArea

    def refreshList(self):
        layoutUtil.clearLayout(self.listLayout)
        for index, sequence in enumerate(
                self.appController.sequenceController.sequences):
            self.listLayout.addWidget(
                SequenceCard(sequence, index, self.appController))

        self.listLayout.addStretch(1)

    def resizeEvent(self, event):
        self.cardList.setFixedWidth(event.size().width())
        super().resizeEvent(event)
Пример #9
0
	def _createNavBar(self):
		navbar = QFrame()
		navbar.setFixedWidth(200)
		navbar.setSizePolicy(QSizePolicy(0, 1))
		navbar.setLayout(QVBoxLayout())
		navbar.layout().setContentsMargins(0, 0, 0, 0)
		navbar.layout().setAlignment(Qt.AlignTop)
		navbar.setObjectName("navbar")
		navbar.layout().setSpacing(0)

		logo = self._createNavButton("Finanças", "icon_app.png")
		logo.setObjectName("logo")
		logo.setFixedHeight(50)
		navbar.layout().addWidget(logo)

		#Criando os Botoes da navbar
		#Botao Vendas
		self.sellsBtn = self._createNavButton("Vendas", "sales.png")
		self.sellsBtn.setChecked(True)

		#Botao Produto
		self.productBtn = self._createNavButton("Produtos", "products.png")
		
		#Botao Clients
		self.clientBtn = self._createNavButton("Clientes", "clientes.png")

		#Botao Categoria
		self.tagBtn = self._createNavButton("Categorias", "category.png")

		#GroupButton para criar uma exclusão entre os botoes
		#Para que não fique selecionado dois de uma vez
		group = QButtonGroup(self)
		group.setExclusive(True)
		group.addButton(self.sellsBtn)
		group.addButton(self.productBtn)
		group.addButton(self.clientBtn)
		group.addButton(self.tagBtn)

		#Adicionando os botoes à Layout da NavBar
		navbar.layout().addWidget(self.sellsBtn)
		navbar.layout().addWidget(self.productBtn)
		navbar.layout().addWidget(self.clientBtn)
		navbar.layout().addWidget(self.tagBtn)
		return navbar
Пример #10
0
    def create_calculator(self):
        title_frame = QFrame()
        title_layout = QVBoxLayout()
        title_frame.setLayout(title_layout)

        calculator_layout = QVBoxLayout()

        calculator_frame = QFrame()
        calculator_frame.setObjectName("graphObj")
        calculator_frame.setFrameStyle(QFrame.Box)
        calculator_frame.setLineWidth(3)
        calculator_frame.setStyleSheet("""#graphObj {color: #322d2d;}""")
        calculator_frame.setFixedWidth(450)

        weight_label = QLabel("Weight", self)
        self.weight_entry = QLineEdit()
        weight_validator = QIntValidator(1, 999)
        self.weight_entry.setValidator(weight_validator)

        reps_label = QLabel("Repetitions", self)
        self.reps_entry = QLineEdit()
        rep_validator = QIntValidator(1, 20)
        self.reps_entry.setValidator(rep_validator)

        calculate_button = QPushButton("Calculate", self)
        calculate_button.setCursor(QCursor(Qt.PointingHandCursor))
        calculate_button.clicked.connect(self.calculate)

        calculator_layout.addWidget(weight_label)
        calculator_layout.addWidget(self.weight_entry)
        calculator_layout.addWidget(reps_label)
        calculator_layout.addWidget(self.reps_entry)
        calculator_layout.addWidget(calculate_button)

        calculator_frame.setLayout(calculator_layout)

        self.result_label = QLabel(self)

        wrapper_layout = QHBoxLayout()
        wrapper_layout.addWidget(title_frame)
        wrapper_layout.addWidget(calculator_frame)
        wrapper_layout.addWidget(self.result_label)

        return wrapper_layout
Пример #11
0
class LateralMenu(QWidget, QObject):
    item_click_signal=pyqtSignal(str)

    def __init__(self, parent=None):
        super(LateralMenu, self).__init__(parent)
        self.setLayout(QVBoxLayout())
        self.top_frame = QFrame()
        #size_policy = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Preferred)
        #self.frame.setSizePolicy(size_policy)
        self.top_frame.setFixedWidth(90)
        self.top_frame.setFrameStyle(QFrame.NoFrame)
        self.top_frame_layout = QVBoxLayout()
        self.top_frame_layout.setAlignment(Qt.AlignTop)
        self.top_frame.setLayout(self.top_frame_layout)

        self.bottom_frame=QFrame()
        self.bottom_frame.setFixedWidth(90)
        self.bottom_frame.setFrameStyle(QFrame.NoFrame)
        self.bottom_frame_layout=QVBoxLayout()
        self.bottom_frame_layout.setAlignment(Qt.AlignBottom)
        self.bottom_frame.setLayout(self.bottom_frame_layout)

        self.layout().addWidget(self.top_frame)
        self.layout().addWidget(self.bottom_frame)
        self.items = []


    def add_item(self, icon: QIcon, tooltip_text: str, name: str, loc=LateralMenuItemLoc.TOP):
        button : ImageButton = ImageButton(icon=icon)
        button.setToolTip(tooltip_text)
        button.setObjectName('lateral_menu_button')
        button.clicked.connect(self.menu_button_on_click_event)
        button.setObjectName(name)
        if loc == LateralMenuItemLoc.TOP:
            self.top_frame_layout.setSpacing(30)
            self.top_frame_layout.addWidget(button)
        else:
            self.bottom_frame_layout.setSpacing(30)
            self.bottom_frame_layout.addWidget(button)
        self.items.append(button)

    def menu_button_on_click_event(self):
        self.item_click_signal.emit(self.sender().objectName())
Пример #12
0
    def create_frame_left(self):
        frame = QFrame()
        frame.setFrameStyle(QFrame.StyledPanel)
        frame.setFixedWidth(200)

        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)

        layout.addWidget(HoveredStarSummaryWidget(controller=self.controller))
        layout.addWidget(StarListFrame(self.main_window, self.controller))

        layout.addWidget(HoveredShipSummaryWidget(controller=self.controller))
        layout.addWidget(SelectedShipSummaryWidget(controller=self.controller))
        layout.addWidget(ShipListFrame(self.main_window, self.controller))

        layout.addStretch(1)

        frame.setLayout(layout)
        return frame
Пример #13
0
    def _init_ui(self):
        font = QFont('Wingdings')

        self._gl = QGridLayout(self)  # type:QGridLayout
        self._gl.setContentsMargins(3, 3, 3, 3)
        self._gl.setSpacing(1)
        label = QLabel(self._title)
        label.setFont(self.LabelFont)
        label.setAlignment(Qt.AlignBottom | Qt.AlignHCenter)
        label.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
        line = QFrame(self)
        line.setFrameShape(QFrame.VLine)
        line.setFrameShadow(QFrame.Raised)
        line.setFixedWidth(10)
        self._gl.addWidget(line, 0, 2, 2, 1)
        if self.useCorner:
            self._gl.addWidget(label, 1, 0, 1, 1, Qt.AlignCenter)
            self.corner = CornerButton('')  # 原来是y
            self.corner.setFont(font)
            self._gl.addWidget(self.corner, 1, 1, 1, 1)
        else:
            self._gl.addWidget(label, 1, 0, 1, 2, Qt.AlignCenter)
Пример #14
0
    def _init_menu_buttons(self):
        left = QFrame(self._splitter)
        left.setFrameShape(QFrame.StyledPanel)
        left.setFixedWidth(150)
        left.setStyleSheet(
            "background-color: #a3c2c2; border: none; border-radius: 5px;")

        iconLabel = QLabel(left)
        pixmap = QPixmap(self._constants.logo_icon)
        iconLabel.setPixmap(pixmap.scaledToWidth(100))
        iconLabel.setContentsMargins(20, 0, 0, 0)
        iconLabel.resize(150, 50)

        self.start_button = QPushButton('Start', left)
        self.start_button.resize(150, 50)
        self.start_button.move(0, 50)
        self.start_button.setStyleSheet(open('style.css').read())
        self.start_button.setProperty('class', 'buttons')

        self.end_button = QPushButton('End', left)
        self.end_button.resize(150, 50)
        self.end_button.move(0, 100)
        self.end_button.setStyleSheet(open('style.css').read())
        self.end_button.setProperty('class', 'buttons')

        self.quit_button = QPushButton('Quit', left)
        self.quit_button.resize(150, 50)
        self.quit_button.move(0, 150)
        self.quit_button.setStyleSheet(open('style.css').read())
        self.quit_button.setProperty('class', 'buttons')

        self.check_box = QCheckBox("Hide landmarks", left)
        self.check_box.setStyleSheet(open('style.css').read())
        self.check_box.setProperty('class', 'checkbox')
        self.check_box.setChecked(False)
        self.check_box.resize(150, 50)
        self.check_box.move(15, 250)

        self._splitter.addWidget(left)
Пример #15
0
    def initUI(self):

        # ==================== FRAME ENCABEZADO ====================

        paleta = QPalette()
        paleta.setColor(QPalette.Background, QColor(51, 0, 102))

        frame = QFrame(self)
        frame.setFrameShape(QFrame.NoFrame)
        frame.setFrameShadow(QFrame.Sunken)
        frame.setAutoFillBackground(True)
        frame.setPalette(paleta)
        frame.setFixedWidth(400)
        frame.setFixedHeight(84)
        frame.move(0, 0)

        labelIcono = QLabel(frame)
        labelIcono.setFixedWidth(40)
        labelIcono.setFixedHeight(40)
        labelIcono.setPixmap(
            QPixmap("icono.png").scaled(40, 40, Qt.KeepAspectRatio,
                                        Qt.SmoothTransformation))
        labelIcono.move(37, 22)

        fuenteTitulo = QFont()
        fuenteTitulo.setPointSize(16)
        fuenteTitulo.setBold(True)

        labelTitulo = QLabel("<font color='white'>Login</font>", frame)
        labelTitulo.setFont(fuenteTitulo)
        labelTitulo.move(83, 20)

        # ===================== WIDGETS LOGIN ======================

        # ========================================================

        labelUsuario = QLabel("Usuario", self)
        labelUsuario.move(60, 120)

        frameUsuario = QFrame(self)
        frameUsuario.setFrameShape(QFrame.StyledPanel)
        frameUsuario.setFixedWidth(280)
        frameUsuario.setFixedHeight(28)
        frameUsuario.move(60, 146)

        self.lineEditUsuario = QLineEdit(frameUsuario)
        self.lineEditUsuario.setFrame(False)
        self.lineEditUsuario.setTextMargins(8, 0, 4, 1)
        self.lineEditUsuario.setFixedWidth(238)
        self.lineEditUsuario.setFixedHeight(26)
        self.lineEditUsuario.move(40, 1)

        # ========================================================

        labelContrasenia = QLabel("Contraseña", self)
        labelContrasenia.move(60, 174)

        frameContrasenia = QFrame(self)
        frameContrasenia.setFrameShape(QFrame.StyledPanel)
        frameContrasenia.setFixedWidth(280)
        frameContrasenia.setFixedHeight(28)
        frameContrasenia.move(60, 200)

        self.lineEditContrasenia = QLineEdit(frameContrasenia)
        self.lineEditContrasenia.setFrame(False)
        self.lineEditContrasenia.setEchoMode(QLineEdit.Password)
        self.lineEditContrasenia.setTextMargins(8, 0, 4, 1)
        self.lineEditContrasenia.setFixedWidth(238)
        self.lineEditContrasenia.setFixedHeight(26)
        self.lineEditContrasenia.move(40, 1)

        labelToken = QLabel("Token", self)
        labelToken.move(60, 224)

        frameToken = QFrame(self)
        frameToken.setFrameShape(QFrame.StyledPanel)
        frameToken.setFixedWidth(280)
        frameToken.setFixedHeight(28)
        frameToken.move(60, 250)

        self.lineEditToken = QLineEdit(frameToken)
        self.lineEditToken.setFrame(False)
        self.lineEditToken.setEchoMode(QLineEdit.Password)
        self.lineEditToken.setTextMargins(8, 0, 4, 1)
        self.lineEditToken.setFixedWidth(238)
        self.lineEditToken.setFixedHeight(26)
        self.lineEditToken.move(40, 1)

        # ================== WIDGETS QPUSHBUTTON ===================

        buttonLogin = QPushButton("Iniciar sesión", self)
        buttonLogin.setFixedWidth(135)
        buttonLogin.setFixedHeight(28)
        buttonLogin.move(60, 286)

        buttonCancelar = QPushButton("Cancelar", self)
        buttonCancelar.setFixedWidth(135)
        buttonCancelar.setFixedHeight(28)
        buttonCancelar.move(205, 286)

        # ==================== MÁS INFORMACIÓN =====================

        # ==================== SEÑALES BOTONES =====================

        buttonLogin.clicked.connect(self.Login)
        buttonCancelar.clicked.connect(self.close)
Пример #16
0
class window(QWidget):
    def __init__(self, parent=None):
        super(window, self).__init__()
        self.worker = predict_worker(parent=self)
        self.init_ui()

    def init_ui(self):
        self.setFixedHeight(600)
        self.setFixedWidth(450)
        self.setWindowTitle("MNIST Digit Prediction")
        self.hasDrawing = False
        self.mouseHeld = False

        self.path = drawing_path()

        self.rect = QRect(0, 50, 400, 400)

        self.label = QLabel("Click and hold the left mouse button to draw.",
                            self)
        self.label.move(25, 10)
        self.label.setFixedWidth(300)

        self.label2 = QLabel("Classifications include numerals (0-9).", self)
        self.label2.move(25, 35)
        self.label2.setFixedWidth(300)

        self.results = QLabel("Results will appear here", self)
        self.results.move(25, 540)
        self.results.setFixedWidth(300)
        self.result_label = QLabel("", self)
        self.result_label.move(330, 490)

        self.clear_button = QPushButton("Clear", self)
        self.clear_button.move(330, 535)
        self.clear_button.clicked.connect(self.clear)

        self.upper_line = QFrame(self)
        self.upper_line.setFrameShape(QFrame.HLine)
        self.upper_line.move(25, 85)
        self.upper_line.setFixedWidth(400)

        self.lower_line = QFrame(self)
        self.lower_line.setFrameShape(QFrame.HLine)
        self.lower_line.move(25, 485)
        self.lower_line.setFixedWidth(400)

        self.left_line = QFrame(self)
        self.left_line.setFrameShape(QFrame.VLine)
        self.left_line.move(-25, 100)
        self.left_line.setFixedHeight(400)

        self.right_line = QFrame(self)
        self.right_line.setFrameShape(QFrame.VLine)
        self.right_line.move(375, 100)
        self.right_line.setFixedHeight(400)

        self.show()

    def clear(self):
        self.path.clear_path()
        self.update()

    def mousePressEvent(self, event):
        x = event.x()
        y = event.y()
        self.path.clear_path()

        if 100 < y < 500:
            if 25 < x < 425:
                if self.hasDrawing == True:
                    self.path.clear()
                self.mouseHeld = True

                position = event.pos()

                self.path.add_point(x, y)

                self.results.setText("Position = " + str(position))
                return
            else:
                self.results.setText("Position out of range")
                self.mouseHeld = False
                return
        self.mouseHeld = False
        self.results.setText("Position out of range")
        return

    def mouseMoveEvent(self, event):
        x = event.x()
        y = event.y()
        if 100 < y < 500:
            if 25 < x < 425:
                if self.mouseHeld == True:
                    position = event.pos()
                    self.path.add_point(x, y)
                    self.results.setText("Position = " + str(position))
                    self.update()
                return
            else:
                self.results.setText("Position out of range")
        else:
            self.results.setText("Position out of range")

    def paintEvent(self, event):
        painter = QPainter()
        painter.begin(self)

        last_x = 0
        last_y = 0
        for x, y in list(zip(self.path.x_pos, self.path.y_pos)):
            if last_x == 0:
                last_x = x
                last_y = y
            else:
                painter.drawLine(last_x, last_y, x, y)
                last_x = x
                last_y = y
        # painter.drawLine(self.last_x, self.last_y, self.cur_x, self.cur_y)
        painter.end()

    def mouseReleaseEvent(self, event):
        self.mouseHeld = False
        if len(self.path.x_pos) < 4: return
        self.results.setText("Processing Data...")
        self.worker.process_data(self.path)

    def update_label(self, text):
        self.results.setText(text)
Пример #17
0
class MainWindow(QWidget):  #child class name
    def __init__(self):  #class constructor
        super().__init__()
        #inheritance from parent attributes

        self.title = 'Window Slide'
        self.top = 100
        self.left = 100
        self.width = 1000
        self.height = 700

        self.initUI()
        #class  method call

    def initUI(self):  #class method definition

        self.setWindowTitle(self.title)
        #set window title
        self.setWindowIcon(QtGui.QIcon('android.png'))
        #set window icon
        self.setGeometry(
            QtCore.QRect(self.top, self.left, self.width, self.height))
        #set geometry of window

        self.button = QPushButton()
        #create a button widget
        self.button.setIcon(QtGui.QIcon('bars.svg'))
        #set icon of button widget
        self.button.setMinimumWidth(70)
        #set minimum width of button
        self.button.setMaximumWidth(70)
        #set maximum wudth of button widget
        self.button.setFixedHeight(50)
        #set fixed height of button widget
        self.button.setIconSize(QtCore.QSize(20, 20))
        #set icon size
        self.button.setStyleSheet("QPushButton"
                                  "{"
                                  "background-color:Turquoise;"
                                  "border:2px solid transparent;"
                                  "}"
                                  "QPushButton:active"
                                  "{"
                                  "background-color:rgb(0,92,157);"
                                  "border-right:4px solid black;"
                                  "}"
                                  "QPushButton:hover"
                                  "{"
                                  "border-bottom:2px solid black;"
                                  "border-right:2px solid transparent;"
                                  "}")
        #set stylesheet of button
        self.button.move(60, 30)
        #button move
        self.button.clicked.connect(self.slide_frame)
        #connect a signal to a slot

        self.frame = QFrame()
        #create a frame widget
        self.frame.setFrameShape(QFrame.StyledPanel)
        #set frame shape
        self.frame.setMinimumWidth(70)
        #set minimum width of frame
        self.frame.setFixedWidth(90)
        #set fixed width of frame
        self.frame.setStyleSheet("QFrame"
                                 "{"
                                 "border:2px solid transparent;"
                                 "background-color:rgb(0,92,127);"
                                 "border-right:3px solid black;"
                                 "border-radius:8px;"
                                 "border-bottom:1px inset black;"
                                 "}")
        #set stylesheet of frame widget

        self.settings_button = QPushButton('Settings')
        #create a button widgeticon
        self.settings_button.setFixedHeight(70)
        #set fixed height of button
        self.settings_button.setFont(QtGui.QFont('Georgia', 10))
        #set font-family and size of button widget
        self.settings_button.setStyleSheet(
            "QPushButton"
            "{"
            "padding:10px;"
            "border:2px solid transparent;"
            "background-color:rgb(0,92,127);"
            "background-image:url('settings.png');"
            "background-repeat:none;"
            "background-position:center left;"
            "border-left:4px solid black;"
            "padding-left:47px;"
            "}"
            "QPushButton:hover"
            "{"
            "border-radius:20px;"
            "border-bottom:1px solid black;"
            "border-left:2px solid transparent;"
            "border-bottom:3px solid black;"
            "color:white;"
            "}")
        #set stylesheet of button
        #self.settings_button.setIconSize(QtCore.QSize(40,40)); #set icon size

        hbox = QHBoxLayout(self)
        #create an horizontal layout
        hbox.addWidget(self.settings_button)
        #ad widget to horizontal layout
        self.frame.setLayout(hbox)
        #set layout of frame

        vbox = QVBoxLayout(self)
        #create a vertical layout
        vbox.addWidget(self.button)
        #add widget to vertical layout
        vbox.addWidget(self.frame)
        #add widget to vertical layout

        self.setLayout(vbox)
        #set layout of windows

        self.show()
        #show window

    def slide_frame(self):  #class method definition
        width_of_frame = self.frame.width()
        #gets the width of frame

        if width_of_frame == 90:
            new_width = 170
        else:
            new_width = 90

        self.animation = QtCore.QPropertyAnimation(self.frame, b'minimumWidth')
        #create a property animation
        self.animation.setDuration(1500)
        #set duration of animation
        self.animation.setStartValue(width_of_frame)
        #set startvalue of animation
        self.animation.setEndValue(new_width)
        #set endvalue of animation
        self.animation.setEasingCurve(QtCore.QEasingCurve.InOutQuart)
        #set easingcurve of animation
        self.animation.start()
Пример #18
0
    def __init__(self, parent=None):
        super(Main_MUESTRA, self).__init__(parent)
        self.setWindowTitle("EXADATA")
        self.setFixedSize(900, 600)
        self.centralwidget = QtWidgets.QWidget(self)
        self.centralwidget.setObjectName("centralwidget")

        # FRAME
        paleta = QPalette()
        paleta.setColor(QPalette.Background, QColor(51, 0, 102))

        frame = QFrame(self)
        frame.setFrameShape(QFrame.NoFrame)
        frame.setFrameShadow(QFrame.Sunken)
        frame.setAutoFillBackground(True)
        frame.setPalette(paleta)
        frame.setFixedWidth(950)
        frame.setFixedHeight(100)
        frame.move(0, 0)

        labelIcono = QLabel(frame)
        labelIcono.setFixedWidth(65)
        labelIcono.setFixedHeight(65)
        labelIcono.setPixmap(QPixmap("icono.jpg").scaled(65, 65, Qt.KeepAspectRatio,
                                                         Qt.SmoothTransformation))
        labelIcono.move(10, 28)

        fuenteTitulo = QFont()
        fuenteTitulo.setPointSize(25)
        fuenteTitulo.setBold(True)

        labelTitulo = QLabel("<font color='white'>EXADATA</font>", frame)
        labelTitulo.setFont(fuenteTitulo)
        labelTitulo.move(85, 30)

        fuenteSubtitulo = QFont()
        fuenteSubtitulo.setPointSize(13)

        labelSubtitulo = QLabel("<font color='white'>Análisis de Tweets "
                                , frame)
        labelSubtitulo.setFont(fuenteSubtitulo)
        labelSubtitulo.move(85, 68)

        # BARRA
        self.progressBar = QtWidgets.QProgressBar(self.centralwidget)
        self.progressBar.setGeometry(QtCore.QRect(10, 480, 510, 23))
        self.progressBar.setProperty("value", 24)
        self.progressBar.setTextVisible(False)
        self.progressBar.setObjectName("progressBar")

        #inicio tabla
        self.tabla = QtWidgets.QTableWidget(self.centralwidget)
        # formato tabla posx,posy,tamx,tamy
        self.tabla.setGeometry(QtCore.QRect(10, 120, 510, 400))
        self.tabla.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.tabla.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
        self.tabla.setColumnCount(4)
        self.tabla.setObjectName("tabla")
        self.tabla.setRowCount(0)
        item = QtWidgets.QTableWidgetItem()
        self.tabla.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tabla.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tabla.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tabla.setHorizontalHeaderItem(3, item)
        self.tabla.horizontalHeader().setDefaultSectionSize(120)
        self.tabla.horizontalHeader().setStretchLastSection(True)
        self.tabla.verticalHeader().setStretchLastSection(False)
        self.tabla.cellClicked.connect(self.ConsultarFecha)
        #fin tabla

        # BOTONES
        # boton exportar_bd
        self.bt_exportar_bd = QtWidgets.QPushButton(self.centralwidget)
        self.bt_exportar_bd.setGeometry(QtCore.QRect(550, 400, 100, 20))
        self.bt_exportar_bd.setObjectName("bt_exportar_bd")
        self.bt_exportar_bd.clicked.connect(self.Exportar_Fecha)

        # boton exportar_bd2
        self.bt_exportar_bd2 = QtWidgets.QPushButton(self.centralwidget)
        self.bt_exportar_bd2.setGeometry(QtCore.QRect(635, 460, 100, 20))
        self.bt_exportar_bd2.setObjectName("bt_exportar_bd2")
        self.bt_exportar_bd2.clicked.connect(self.Exportar_Cantidad)

        # CUADRO TEXTO
        self.muestra_cantidad = QtWidgets.QLineEdit(self.centralwidget)
        self.muestra_cantidad.setGeometry(QtCore.QRect(550, 460, 50, 20))
        self.muestra_cantidad.setObjectName("muestra_cantidad")

        #=================================================================================
        self.setCentralWidget(self.centralwidget)

        #CALENDARIO
        # formato tabla posx,posy,tamx,tamy
        self.calendario = QtWidgets.QCalendarWidget(self.centralwidget)
        self.calendario.setGeometry(QtCore.QRect(550, 120, 312, 183))
        self.calendario.setStyleSheet("")
        self.calendario.setStyleSheet("alternate-background-color: rgb(118, 148, 255);")
        self.calendario.setObjectName("calendario")

        #LABEL MUESTRA POR FECHA
        self.label_muestraFecha = QtWidgets.QLabel(self.centralwidget)
        self.label_muestraFecha.setGeometry(QtCore.QRect(550, 330, 121, 16))
        self.label_muestraFecha.setObjectName("label_muestraFecha")

        #LABEL MUESTRA DE TODA LA BASE
        self.label_muestraToda = QtWidgets.QLabel(self.centralwidget)
        self.label_muestraToda.setGeometry(QtCore.QRect(550, 440, 200, 16))
        self.label_muestraToda.setObjectName("label_muestraToda")

        self.fechaInicio = QtWidgets.QDateEdit(self.centralwidget)
        self.fechaInicio.setGeometry(QtCore.QRect(550, 370, 110, 22))
        self.fechaInicio.setObjectName("fechaInicio")
        self.fechaInicio.setCalendarPopup(True)
        self.fechaTermino = QtWidgets.QDateEdit(self.centralwidget)
        self.fechaTermino.setGeometry(QtCore.QRect(720, 370, 110, 22))
        self.fechaTermino.setObjectName("fechaTermino")
        self.fechaTermino.setCalendarPopup(True)
        self.fechaInicio.setDate(QtCore.QDate.currentDate())
        self.fechaTermino.setDate(QtCore.QDate.currentDate())

        self.incioLetra = QtWidgets.QLabel(self.centralwidget)
        self.incioLetra.setGeometry(QtCore.QRect(550, 350, 111, 16))
        self.incioLetra.setObjectName("incioLetra")
        self.terminoLetra = QtWidgets.QLabel(self.centralwidget)
        self.terminoLetra.setGeometry(QtCore.QRect(720, 350, 111, 16))
        self.terminoLetra.setObjectName("terminoLetra")

        #BARRA MENU
        self.menubar = QtWidgets.QMenuBar(self)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1000, 21))
        self.menubar.setObjectName("menubar")

        self.Programas = QtWidgets.QMenu(self.menubar)
        self.BaseDeDatos = QtWidgets.QAction(self)
        self.menubar.addAction(self.Programas.menuAction())
        self.Programas.addAction(self.BaseDeDatos)
        self.BaseDeDatos.triggered.connect(self.close)

        self.Ayuda = QtWidgets.QMenu(self.menubar)
        self.SobreQue = QtWidgets.QAction(self)
        self.menubar.addAction(self.Ayuda.menuAction())
        self.Ayuda.addAction(self.SobreQue)
        self.SobreQue.triggered.connect(self.AYUDA)

        # boton recarga_bd
        self.bt_recarga_bd = QtWidgets.QPushButton(self.centralwidget)
        self.bt_recarga_bd.setGeometry(QtCore.QRect(10, 530, 510, 20))
        self.bt_recarga_bd.setObjectName("bt_recarga_bd")
        self.bt_recarga_bd.clicked.connect(self.CargarTabla)

        self.retranslateUi(self)
        QtCore.QMetaObject.connectSlotsByName(self)

        #new table
        self.tabla_master()
        self.CargarTabla()
        self.progressBar.hide()
Пример #19
0
    def __init__(self, parent=None):
        super(Main_DB, self).__init__(parent)
        self.setWindowTitle("EXADATA")
        self.setFixedSize(800, 600)
        self.setWindowIcon(QIcon("icono.jpg"))
        self.centralwidget = QtWidgets.QWidget(self)
        self.centralwidget.setObjectName("centralwidget")
        # FRAME
        paleta = QPalette()
        paleta.setColor(QPalette.Background, QColor(51, 0, 102))

        frame = QFrame(self)
        frame.setFrameShape(QFrame.NoFrame)
        frame.setFrameShadow(QFrame.Sunken)
        frame.setAutoFillBackground(True)
        frame.setPalette(paleta)
        frame.setFixedWidth(800)
        frame.setFixedHeight(100)
        frame.move(0, 0)

        labelIcono = QLabel(frame)
        labelIcono.setFixedWidth(65)
        labelIcono.setFixedHeight(65)
        labelIcono.setPixmap(
            QPixmap("icono.jpg").scaled(65, 65, Qt.KeepAspectRatio,
                                        Qt.SmoothTransformation))
        labelIcono.move(10, 28)

        fuenteTitulo = QFont()
        fuenteTitulo.setPointSize(25)
        fuenteTitulo.setBold(True)

        labelTitulo = QLabel("<font color='white'>EXADATA</font>", frame)
        labelTitulo.setFont(fuenteTitulo)
        labelTitulo.move(85, 30)

        fuenteSubtitulo = QFont()
        fuenteSubtitulo.setPointSize(13)

        labelSubtitulo = QLabel("<font color='white'>Análisis de Tweets ",
                                frame)
        labelSubtitulo.setFont(fuenteSubtitulo)
        labelSubtitulo.move(85, 68)

        #BARRA
        self.progressBar = QtWidgets.QProgressBar(self.centralwidget)
        self.progressBar.setGeometry(QtCore.QRect(10, 400, 375, 23))
        self.progressBar.setProperty("value", 24)
        self.progressBar.setTextVisible(False)
        self.progressBar.setObjectName("progressBar")

        #inicio tabla
        self.tabla = QtWidgets.QTableWidget(self.centralwidget)
        self.tabla.setGeometry(QtCore.QRect(10, 110, 500, 400))
        self.tabla.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.tabla.setSizeAdjustPolicy(
            QtWidgets.QAbstractScrollArea.AdjustToContents)
        self.tabla.setColumnCount(3)
        self.tabla.setObjectName("tabla")
        self.tabla.setRowCount(0)
        item = QtWidgets.QTableWidgetItem()
        self.tabla.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tabla.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tabla.setHorizontalHeaderItem(2, item)
        self.tabla.horizontalHeader().setDefaultSectionSize(165)
        self.tabla.horizontalHeader().setStretchLastSection(True)
        self.tabla.verticalHeader().setStretchLastSection(False)
        self.tabla.cellClicked.connect(self.clic)

        #fin tabla

        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(510, 70, 151, 16))
        self.label.setObjectName("label")

        #qlineedit nombre base
        self.input_nombre_bd = QtWidgets.QLineEdit(self.centralwidget)
        self.input_nombre_bd.setGeometry(QtCore.QRect(550, 130, 170, 20))
        self.input_nombre_bd.setObjectName("input_nombre_bd")

        # label
        #label nombre_bd
        self.label_nombre_base = QtWidgets.QLabel(self.centralwidget)
        self.label_nombre_base.setGeometry(QtCore.QRect(550, 110, 180, 20))
        self.label_nombre_base.setObjectName("label_nombre_base")
        # label editar_bd
        self.label_editar_bd = QtWidgets.QLabel(self.centralwidget)
        self.label_editar_bd.setGeometry(QtCore.QRect(550, 230, 180, 16))
        self.label_editar_bd.setObjectName("label_editar_bd")

        # BOTONES
        #boton importar
        self.bt_importar = QtWidgets.QPushButton(self.centralwidget)
        self.bt_importar.setGeometry(QtCore.QRect(550, 160, 170, 21))
        self.bt_importar.setObjectName("bt_importar")
        # boton agregar_bd
        self.bt_agregar_bd = QtWidgets.QPushButton(self.centralwidget)
        self.bt_agregar_bd.setGeometry(QtCore.QRect(550, 260, 170, 21))
        self.bt_agregar_bd.setObjectName("bt_agregar_bd")
        self.bt_agregar_bd.clicked.connect(self.Anadir)
        # boton eliminar_bd
        self.bt_eliminar_bt = QtWidgets.QPushButton(self.centralwidget)
        self.bt_eliminar_bt.setGeometry(QtCore.QRect(550, 290, 170, 21))
        self.bt_eliminar_bt.setObjectName("bt_eliminar_bt")
        self.bt_eliminar_bt.clicked.connect(self.BorrarTabla)
        # boton exportar_bd
        self.bt_exportar_bd = QtWidgets.QPushButton(self.centralwidget)
        self.bt_exportar_bd.setGeometry(QtCore.QRect(550, 320, 170, 21))
        self.bt_exportar_bd.setObjectName("bt_exportar_bd")
        self.bt_exportar_bd.clicked.connect(self.ExportarBase)
        # boton recarga_bd
        self.bt_recarga_bd = QtWidgets.QPushButton(self.centralwidget)
        self.bt_recarga_bd.setGeometry(QtCore.QRect(10, 520, 500, 21))
        self.bt_recarga_bd.setObjectName("bt_recarga_bd")
        self.bt_recarga_bd.clicked.connect(self.CargarTabla)

        #=================================================================================
        self.setCentralWidget(self.centralwidget)

        # BARRA MENU
        self.menubar = QtWidgets.QMenuBar(self)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menubar.setObjectName("menubar")
        self.Programas = QtWidgets.QMenu(self.menubar)
        self.BaseDeDatos = QtWidgets.QAction(self)
        self.menubar.addAction(self.Programas.menuAction())
        self.Programas.addAction(self.BaseDeDatos)
        self.Ayuda = QtWidgets.QMenu(self.menubar)
        self.SobreQue = QtWidgets.QAction(self)
        self.menubar.addAction(self.Ayuda.menuAction())
        self.Ayuda.addAction(self.SobreQue)

        self.retranslateUi()
        self.tabla_master()
        self.CargarTabla()
        self.progressBar.hide()
Пример #20
0
class _UIElement(QObject):
    """
    Универсальный класс элемента интерфейса. Создан, потому что изначальные классы PyQt
    требуют значительной доработки и к тому же недостаточно интуитивны, легко запутаться
    в Qt-овском нагромождении из виджетов, лэйаутов, item объектов, прочей шелухи.
    Плюсы этого класса: позволяет отображать подпись над элементом,
                                  удобно включать/выключать функциональность,
                        сразу ставит виджет в центр (а не в край, чтоб потом его ещё ровнять)
                        убирает ненужные отступы между элементами
                        все последующие элементы наследуются от него
    """

    def __init__(self, widget: QWidget = None, layout: QLayout = None,
                 description: str = None, disable: bool = False, stroked: bool = False):
        """
        :param widget: класс Qt Widget, который будет отображаться как элемент интерфейса
        :param layout: класс слоя, который будет основанием, на котором будет лежать виджет
        :param description: описание или название, котороые при наличии будет отображаться над виджетом
        :param disable: опция отключения виджета при создании. По умолчанию False, т.е. виджет включён
        """
        super().__init__()

        self._inner_widget = widget
        self._layout = QVBoxLayout() if layout is None else layout
        self._layout.setContentsMargins(2, 2, 2, 2)
        if description is not None or layout is not None:
            self._out_widget = QFrame()
            if stroked:
                self._out_widget.setFrameStyle(QFrame.Plain)
            if description is not None:
                self._layout.addWidget(QLabel(description), alignment=Qt.AlignCenter)
            if widget is not None:
                self._layout.addWidget(widget)
            self._out_widget.setLayout(self._layout)
        elif widget is not None:
            self._out_widget = widget
            widget.setDisabled(disable)

    def toggle_element(self, state=None):
        if self._inner_widget is not None:
            self._inner_widget.setDisabled(self._inner_widget.isEnabled() if state is None else not state)

    def set_max_width(self, width):
        self._out_widget.setMaximumWidth(width)

    def set_max_height(self, height):
        self._out_widget.setMaximumHeight(height)

    def set_fixed_width(self, width):
        self._out_widget.setFixedWidth(width)

    def set_fixed_height(self, height):
        self._out_widget.setFixedHeight(height)

    def set_min_width(self, width):
        self._out_widget.setMinimumWidth(width)

    def set_min_height(self, height):
        self._out_widget.setMinimumHeight(height)

    def __layout__(self) -> QLayout:
        return self._out_widget.layout()

    def __widget__(self) -> QWidget:
        return self._out_widget
Пример #21
0
    def __init__(self, history, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.history = history

        chart = self.generate_chart()

        self.SPACING = 10
        self.MIN_WIDTH = 400
        self.MIN_HEIGHT = 200

        chart.setMinimumWidth(self.MIN_WIDTH)
        chart.setMinimumHeight(self.MIN_HEIGHT)

        image_layout = QVBoxLayout()

        self.plant_study = None  # the study record the plant is a part of
        self.plant: Optional[Plant] = None  # the plant being displayed

        self.plant_date_label = QLabel(self)
        self.plant_date_label.setAlignment(Qt.AlignLeft)

        self.plant_duration_label = QLabel(self)
        self.plant_duration_label.setAlignment(Qt.AlignRight)

        label_layout = QHBoxLayout()
        label_layout.addWidget(self.plant_date_label)
        label_layout.addWidget(self.plant_duration_label)

        self.canvas = Canvas(self)
        self.canvas.setMinimumWidth(self.MIN_HEIGHT)
        self.canvas.setMinimumHeight(self.MIN_HEIGHT)

        stacked_layout = QVBoxLayout()
        stacked_layout.addLayout(label_layout)
        stacked_layout.addWidget(self.canvas)

        image_control = QHBoxLayout()

        text_color = self.palette().text().color()

        self.age_slider = QSlider(Qt.Horizontal, minimum=0, maximum=1000, value=1000,
                                  valueChanged=self.slider_value_changed)

        self.left_button = QPushButton(self, clicked=self.left,
                                       icon=qtawesome.icon('fa5s.angle-left', color=text_color))
        self.right_button = QPushButton(self, clicked=self.right,
                                        icon=qtawesome.icon('fa5s.angle-right', color=text_color))
        self.save_button = QPushButton(self, clicked=self.save,
                                       icon=qtawesome.icon('fa5s.download', color=text_color))

        image_control.addWidget(self.left_button)
        image_control.addWidget(self.right_button)
        image_control.addSpacing(self.SPACING)
        image_control.addWidget(self.age_slider)
        image_control.addSpacing(self.SPACING)
        image_control.addWidget(self.save_button)

        image_layout.addLayout(stacked_layout)
        image_layout.addLayout(image_control)
        image_layout.setContentsMargins(self.SPACING, self.SPACING, self.SPACING, self.SPACING)

        separator = QFrame()
        separator.setStyleSheet(f"background-color: {self.palette().text().color().name()}")
        separator.setFixedWidth(1)

        main_layout = QGridLayout()
        main_layout.setHorizontalSpacing(self.SPACING * 2)
        main_layout.setColumnStretch(0, 1)
        main_layout.setColumnStretch(2, 0)
        main_layout.addWidget(chart, 0, 0)
        main_layout.addWidget(separator, 0, 1)
        main_layout.addLayout(image_layout, 0, 2)

        self.setLayout(main_layout)

        self.move()  # go to the most recent plant

        self.refresh()
Пример #22
0
    def initui(self):

        palette = QPalette()
        palette.setColor(QPalette.Background, QColor(100, 100, 100))

        # ************ Header ************
        # ------------ Frame ----------
        frame = QFrame(self)
        frame.setFrameShape(QFrame.NoFrame)
        frame.setFrameShadow(QFrame.Sunken)
        frame.setAutoFillBackground(True)
        frame.setPalette(palette)
        frame.setFixedWidth(800)
        frame.setFixedHeight(84)
        frame.move(0, 0)

        # ------------ Icon ----------

        label_icon = QLabel(frame)
        label_icon.setFixedWidth(40)
        label_icon.setFixedHeight(40)
        label_icon.setPixmap(
            QPixmap("./images/LoginIcon.png").scaled(40, 40,
                                                     Qt.KeepAspectRatio,
                                                     Qt.SmoothTransformation))
        label_icon.move(57, 22)

        # ------------ Tittle ----------

        tittle_font = QFont()
        tittle_font.setPixelSize(16)
        tittle_font.setBold(True)

        tittle_label = QLabel("<font color='white'> Ariadna </rfont>", frame)
        tittle_label.setFont(tittle_font)
        tittle_label.move(103, 20)

        # ------------ Sub Tittle ----------

        sub_tittle_font = QFont()
        sub_tittle_font.setPointSize(9)

        sub_tittle_label = QLabel(
            "<font color='white'> Labyrinth Solver </font>", frame)
        sub_tittle_label.setFont(sub_tittle_font)
        sub_tittle_label.move(111, 46)

        # ************ Body ************
        # ------------ Frame ----------
        instructions_frame = QFrame(self)
        instructions_frame.setFrameShape(QFrame.NoFrame)
        instructions_frame.setFrameShadow(QFrame.Sunken)
        instructions_frame.setAutoFillBackground(False)
        instructions_frame.setFixedWidth(300)
        instructions_frame.setFixedHeight(500)
        instructions_frame.move(0, 84)

        # ---------- Instructions ----------

        instructions_font = QFont()
        instructions_font.setPointSize(9)

        instructions_label = QLabel(
            "<font style='font-family:times new roman;font-size:15px;' color='white'><b> "
            "<br/>Pre-resquisitos:"
            "<br/><br/>Para que la imagen pueda ser "
            "<br/>reconocida por el sistema, el "
            "<br/>laberinto debe ser dibujado en "
            "<br/>una hoja blanca con un marcador o"
            "<br/>esfero de color negro y debe tener"
            "<br/>una forma rectangular."
            "<br/><br/>Pasos:"
            "<br/><br/>1. Seleccionar la opcion "
            "<br/>'Nuevo Laberinto'."
            "<br/><br/>2. Seleccionar la opcion "
            "<br/>'Cargar laberinto', en esta opcion se."
            "<br/>soluciona el laberinto de manera "
            "<br/>automatica."
            "</b></font>", instructions_frame)
        instructions_label.setFont(instructions_font)
        instructions_label.move(20, 20)

        # ---------- Buttons ----------

        back_main_menu_button = QPushButton("Volver al Menu Principal", self)
        back_main_menu_button.setFixedWidth(200)
        back_main_menu_button.setFixedHeight(28)
        back_main_menu_button.move(300, 660)

        # ---------- Button's Events ----------

        back_main_menu_button.clicked.connect(self.back_main_menu)
Пример #23
0
class AppCard(QFrame):
	"""A Card widget derived from QFrame contains app icon, 
	app name, app developer, app description, app rating, etc"""

	STYLES = STYLES
	Q_ENUM(STYLES)

	def __init__(self, parent=None):
		QFrame.__init__(self, parent)

		self.setFixedSize(200, 300)

		self.setObjectName("Card")
		
		self.setAutoFillBackground(True)

		self.appId = -1
		self.appIcon = "./img/card/bird.png"
		self.appBack = "./img/card/card_back.png"
		self.appName = "PROS Smart CPQ for Manufacturing"
		self.appDev = "By PROS\nWeb apps"
		self.appRating = 0
		self.appFeedback = 0
		self.appState = 0
		self.style_str = "border: 1px solid #ddd; background: qlineargradient(spread:pad, x1:0 y1:0, x2:1 y2:1, stop:0 rgba(255, 255, 255, 255), stop:1 rgba(225, 225, 225, 225));"
		self.appDesc = "Deliver Sales Automation and Profits Through Personalized Selling"
		self.setBackgroundImage(self.appBack)

		self.iconSize = 48, 48
		self.iconMargins = 10, 10, 10, 10
		self.iconFrameStyle = STYLES.STYLE_DEFAULT

		self.iconFrame = QLabel(self)
		self.iconFrame.setAutoFillBackground(True)
		self.iconFrame.setObjectName("IconFrame")
		self.iconFrame.setStyleSheet(self.iconFrameStyle)

		self.imgIcon = QLabel(self.iconFrame)
		self.imgIcon.setPixmap(QPixmap(self.appIcon))
		self.imgIcon.setFixedSize(48, 48)
		self.imgIcon.setScaledContents(True)

		self.iconLayout = QHBoxLayout(self.iconFrame)
		self.iconLayout.setContentsMargins(10, 10, 10, 10)
		self.iconLayout.setAlignment(Qt.AlignLeft)
		self.iconLayout.addWidget(self.imgIcon, Qt.AlignLeft)
		self.iconFrame.setLayout(self.iconLayout)

		self.txtName = ElideLabel("", self)
		self.txtName.setText(self.appName)
		self.txtName.setFont(QFont("Roboto", 15))
		self.txtName.setElideMode(1)
		self.txtName.setWordWrap(True)

		self.txtDev = ElideLabel("", self)
		self.txtDev.setWordWrap(True)
		self.txtDev.setText(self.appDev)
		self.txtDev.setFont(QFont("Roboto", 8))

		self.txtDesc = ElideLabel("", self)
		self.txtDesc.setText(self.appDesc)
		self.txtDesc.setAlignment(Qt.AlignTop)
		self.txtDesc.setFont(QFont("Roboto", 10))
		self.txtDesc.setElideMode(1)
		self.txtDesc.setWordWrap(True)	

		self.starRating = StarRating(self)

		self.feedbackGiven = QLabel(self)
		self.feedbackGiven.setObjectName("Feedback")
		self.feedbackGiven.setStyleSheet("#Feedback{color: #ababab}")
		self.feedbackGiven.setFont(QFont("Roboto", 12))
		self.feedbackGiven.setAlignment(Qt.AlignVCenter)
		self.feedbackGiven.setText("(" + str(self.appFeedback) + ")")

		self.btnInstall = Button('Install', self)
		self.btnInstall.clicked.connect(self.onInstallClicked)

		self.btnLaunch = Button('Launch', self)
		self.btnLaunch.setButtonType(Button.BUTTON_TYPE.LAUNCH)
		self.btnLaunch.clicked.connect(self.onLaunchClicked)
		self.btnLaunch.hide()

		self.btnUninstall = Button('Uninstall', self)
		self.btnUninstall.setButtonType(Button.BUTTON_TYPE.DELETE)
		self.btnUninstall.clicked.connect(self.onUninstallClicked)
		self.btnUninstall.hide()

		self.shadowEffect = QGraphicsDropShadowEffect(self)
		self.shadowEffect.setBlurRadius(9)
		self.shadowEffect.setColor(QColor(225, 225, 225))
		self.shadowEffect.setOffset(5, 5)
		self.setGraphicsEffect(self.shadowEffect)

		self.frameLayout = QVBoxLayout(self)
		self.frameLayout.setContentsMargins(0, 0, 0, 0)

		self.mainLayout = QVBoxLayout()
		self.mainLayout.setSpacing(5)
		self.mainLayout.setContentsMargins(10, 0, 10, 15)

		self.ratingLayout = QHBoxLayout()
		self.ratingLayout.setSpacing(5)
		self.ratingLayout.addWidget(self.starRating, 1, Qt.AlignLeft)
		self.ratingLayout.addWidget(self.feedbackGiven, 1, Qt.AlignLeft)

		self.separator = QFrame(self)
		self.separator.setObjectName("line")
		self.separator.setFixedHeight(2)
		self.separator.setFixedWidth(self.width())
		self.separator.setFrameShape(QFrame.HLine)
		self.separator.setFrameShadow(QFrame.Sunken)

		self.btnLayout = QHBoxLayout()
		self.btnLayout.setContentsMargins(5, 5, 5, 10)
		self.btnLayout.setSpacing(20)
		self.btnLayout.setAlignment(Qt.AlignHCenter)
		self.btnLayout.addWidget(self.btnInstall)
		self.btnLayout.addWidget(self.btnUninstall)
		self.btnLayout.addWidget(self.btnLaunch)

		self.mainLayout.addWidget(self.txtName, 1, Qt.AlignLeft)
		self.mainLayout.addWidget(self.txtDev, 1, Qt.AlignLeft)
		self.mainLayout.addWidget(self.txtDesc, 3, Qt.AlignLeft)
		self.mainLayout.addLayout(self.ratingLayout, Qt.AlignLeft)

		self.frameLayout.addWidget(self.iconFrame, 1)
		self.frameLayout.addLayout(self.mainLayout)
		self.frameLayout.addWidget(self.separator)
		self.frameLayout.addLayout(self.btnLayout)

		self.setLayout(self.frameLayout)
		self.setAppState(self.appState)
		self.show()

	#automatically adjust child widgets' sizes based on the frame's geometry
	#this might affect widgets' sizes
	def autoAdjust(self):
		self.starRating.adjustWidthByHeight(self.height()/15)
		self.feedbackGiven.setFixedHeight(self.height()/16)
		self.iconFrame.setFixedHeight(self.height()/5)
		self.setIconSize(self.iconFrame.height() * 4 / 5, self.iconFrame.height() *4 / 5)
		mm = self.iconFrame.height() / (5 * 2)
		self.setIconMargins(mm, mm, mm, mm)

	#set fixed size for the icon, maybe called logo or brand
	def setIconSize(self, aw, ah):
		self.iconSize = aw, ah
		self.imgIcon.setFixedSize(self.iconSize[0], self.iconSize[1])

	#set icon margins within the icon frame
	def setIconMargins(self, ml, mt = 0, mr = 0, mb = 0):
		self.iconMargins = ml, mt, mr, mb
		mml, mmt, mmr, mmb = self.mainLayout.getContentsMargins()
		self.iconLayout.setContentsMargins(mml, mt, mmr, mb)
	#set icon frame's style, you can stylize background(single color, gradient or image), border, etc
	def setIconFrameStyle(self, style):
		self.iconFrameStyle = style
		self.iconFrame.setStyleSheet(self.iconFrameStyle)

	@pyqtSlot()
	def onInstallClicked(self):
		QMessageBox.information(None, "ID: " + str(self.appId), "Install button clicked")

	@pyqtSlot()
	def onUninstallClicked(self):
		QMessageBox.information(None, "ID: " + str(self.appId), "Gonna uninstall the app?")

	@pyqtSlot()
	def onLaunchClicked(self):
		QMessageBox.information(None, "ID: " + str(self.appId), "Launch is not ready yet!")

	#set whether the app is already installed or not, accordingly show or hide appropriate buttons
	def setAppState(self, state):
		if state == 0:
			self.btnInstall.show()
			self.btnUninstall.hide()
			self.btnLaunch.hide()
		elif state == 1:
			self.btnInstall.hide()
			self.btnUninstall.show()
			self.btnLaunch.show()
		self.autoAdjust()

	#return current app state
	def getAppState(self):
		return self.appState

	#set applicaton name
	def setAppName(self, name):
		if name != self.appName:
			self.appName = name
			self.txtName.setText(self.appName)
	#return application name
	def getAppName(self):
		return self.appName

	#set developer name, or could be company name
	def setAppDevName(self, name):
		if name != self.appDev:
			self.appDev = name
			self.txtDev.setText(self.appDev)

	#return developer name
	def getAppDevName(self):
		return self.appDev

	#set description about application
	def setAppDesc(self, desc):
		if desc != self.appDesc:
			self.appDesc = desc
			self.txtDesc.setText(self.appDesc)

	#return description of application
	def getAppDesc(self):
		return self.appDesc

	#set application icon with appropriate file path
	def setAppIcon(self, imgPath):
		if imgPath != self.appIcon:
			self.appIcon = imgPath
			self.imgIcon.setPixmap(QPixmap(self.appIcon))

	#return QPixmap of icon
	def getAppIconPixmap(self):
		return QPixmap(self.appIcon)

	#return path to icon
	def getAppIconPath(self):
		return self.appIcon

	#set applicaiton star rating and count of given feedbacks
	def setAppRating(self, rating, feedback):
		if rating != self.appRating or feedback != self.appFeedback:
			self.appRating, self.appFeedback = rating, feedback
			self.starRating.setRating(rating)
			self.feedbackGiven.setText("(" + str(feedback) + ")")

	#return star rating value and the count of given feedbacks
	def getAppRating(self):
		return (self.appRating, self.appFeedback)

	#set path to background would be embedded into stylesheet string
	def setBackgroundImage(self, img):
		self.appBack = img
		self.setStyleSheet("#Card{" + self.style_str + " background-image: url(" + self.appBack + ")}")

	#set application ID
	def setAppId(self, id):
		self.appId = id

	#return app ID
	def getAppId(self):
		return self.appId

	#set blur radius of frame's shadow effect
	def setShadowBlurRadius(self, radius):
		self.shadowEffect.setBlurRadius(radius)

	#set shadow offset of frame's shadow effect
	def setShadowOffset(self, offX, offY):
		self.shadowEffect.setOffset(offX, offY)

	#set shadow color of frame's shadow effect
	def setShadowColor(self, color):
		self.shadowEffect.setColor(color)

	#set font of application name
	def setAppNameFont(self, font):
		self.txtName.setFont(font)

	#set font of developer name
	def setAppDevFont(self, font):
		self.txtDev.setFont(font)

	#set font of description to the app
	def setAppDescFont(self, font):
		self.txtDesc.setFont(font);
Пример #24
0
    def initUI(self):

        # ==================== FRAME ENCABEZADO ====================

        paleta = QPalette()
        paleta.setColor(QPalette.Background, QColor(51, 0, 102))

        frame = QFrame(self)
        frame.setFrameShape(QFrame.NoFrame)
        frame.setFrameShadow(QFrame.Sunken)
        frame.setAutoFillBackground(True)
        frame.setPalette(paleta)
        frame.setFixedWidth(400)
        frame.setFixedHeight(84)
        frame.move(0, 0)

        labelIcono = QLabel(frame)
        labelIcono.setFixedWidth(40)
        labelIcono.setFixedHeight(40)
        labelIcono.setPixmap(
            QPixmap("./assets/icono.png").scaled(40, 40, Qt.KeepAspectRatio,
                                                 Qt.SmoothTransformation))
        labelIcono.move(37, 22)

        fuenteTitulo = QFont()
        fuenteTitulo.setPointSize(20)
        fuenteTitulo.setBold(True)

        labelTitulo = QLabel("<font color='white'>Proyección</font>", frame)
        labelTitulo.setFont(fuenteTitulo)
        labelTitulo.move(90, 20)

        fuenteSubtitulo = QFont()
        fuenteSubtitulo.setPointSize(12)

        labelSubtitulo = QLabel(
            "<font color='white'>Pronósticos de ventas"
            ".</font>", frame)
        labelSubtitulo.setFont(fuenteSubtitulo)
        labelSubtitulo.move(115, 50)

        # ========================================================

        labelUsuario = QLabel("Usuario", self)
        labelUsuario.move(60, 170)

        frameUsuario = QFrame(self)
        frameUsuario.setFrameShape(QFrame.StyledPanel)
        frameUsuario.setFixedWidth(280)
        frameUsuario.setFixedHeight(28)
        frameUsuario.move(60, 196)

        imagenUsuario = QLabel(frameUsuario)
        imagenUsuario.setPixmap(
            QPixmap("./assets/usuario.png").scaled(20, 20, Qt.KeepAspectRatio,
                                                   Qt.SmoothTransformation))
        imagenUsuario.move(10, 4)

        self.lineEditUsuario = QLineEdit(frameUsuario)
        self.lineEditUsuario.setFrame(False)
        self.lineEditUsuario.setTextMargins(8, 0, 4, 1)
        self.lineEditUsuario.setFixedWidth(238)
        self.lineEditUsuario.setFixedHeight(26)
        self.lineEditUsuario.move(40, 1)

        # ========================================================

        labelContrasenia = QLabel("Contraseña", self)
        labelContrasenia.move(60, 224)

        frameContrasenia = QFrame(self)
        frameContrasenia.setFrameShape(QFrame.StyledPanel)
        frameContrasenia.setFixedWidth(280)
        frameContrasenia.setFixedHeight(28)
        frameContrasenia.move(60, 250)

        imagenContrasenia = QLabel(frameContrasenia)
        imagenContrasenia.setPixmap(
            QPixmap("./assets/contrasena.png").scaled(20, 20,
                                                      Qt.KeepAspectRatio,
                                                      Qt.SmoothTransformation))
        imagenContrasenia.move(10, 4)

        self.lineEditContrasenia = QLineEdit(frameContrasenia)
        self.lineEditContrasenia.setFrame(False)
        self.lineEditContrasenia.setEchoMode(QLineEdit.Password)
        self.lineEditContrasenia.setTextMargins(8, 0, 4, 1)
        self.lineEditContrasenia.setFixedWidth(238)
        self.lineEditContrasenia.setFixedHeight(26)
        self.lineEditContrasenia.move(40, 1)

        # ================== WIDGETS QPUSHBUTTON ===================

        buttonLogin = QPushButton("Iniciar sesión", self)
        buttonLogin.setFixedWidth(135)
        buttonLogin.setFixedHeight(28)
        buttonLogin.move(60, 286)

        buttonCancelar = QPushButton("Cancelar", self)
        buttonCancelar.setFixedWidth(135)
        buttonCancelar.setFixedHeight(28)
        buttonCancelar.move(205, 286)

        # ==================== MÁS INFORMACIÓN =====================

        labelInformacion = QLabel(
            "<a href='https://github.com/liluisjose1'>Más información</a>.",
            self)
        labelInformacion.setOpenExternalLinks(True)
        labelInformacion.setToolTip("Help")
        labelInformacion.move(15, 344)

        # ==================== SEÑALES BOTONES =====================

        buttonLogin.clicked.connect(self.Login)
        buttonCancelar.clicked.connect(self.close)
Пример #25
0
    def initui(self):

        palette = QPalette()
        palette.setColor(QPalette.Background, QColor(100, 100, 100))

        # ************ Header ************
        # ------------ Frame ----------
        frame = QFrame(self)
        frame.setFrameShape(QFrame.NoFrame)
        frame.setFrameShadow(QFrame.Sunken)
        frame.setAutoFillBackground(True)
        frame.setPalette(palette)
        frame.setFixedWidth(500)
        frame.setFixedHeight(84)
        frame.move(0, 0)

        # ------------ Icon ----------

        label_icon = QLabel(frame)
        label_icon.setFixedWidth(40)
        label_icon.setFixedHeight(40)
        label_icon.setPixmap(
            QPixmap("./images/LoginIcon.png").scaled(40, 40,
                                                     Qt.KeepAspectRatio,
                                                     Qt.SmoothTransformation))
        label_icon.move(57, 22)

        # ------------ Tittle ----------

        tittle_font = QFont()
        tittle_font.setPixelSize(16)
        tittle_font.setBold(True)

        tittle_label = QLabel("<font color='white'> Ariadna Sign In </rfont>",
                              frame)
        tittle_label.setFont(tittle_font)
        tittle_label.move(103, 20)

        # ------------ Sub Tittle ----------

        sub_tittle_font = QFont()
        sub_tittle_font.setPointSize(9)

        sub_tittle_label = QLabel(
            "<font color='white'> Labyrinth Solver </font>", frame)
        sub_tittle_label.setFont(sub_tittle_font)
        sub_tittle_label.move(111, 46)

        # ************ Login ************

        # ---------- User ----------

        user_label = QLabel('Usuario', self)
        user_label.move(90, 110)

        user_frame = QFrame(self)
        user_frame.setFrameShape(QFrame.StyledPanel)
        user_frame.setFixedWidth(338)
        user_frame.setFixedHeight(28)
        user_frame.move(90, 136)

        user_icon = QLabel(user_frame)
        user_icon.setPixmap(
            QPixmap("./images/UserIcon.png").scaled(20, 20, Qt.KeepAspectRatio,
                                                    Qt.SmoothTransformation))
        user_icon.move(10, 4)

        self.line_edit_user = QLineEdit(user_frame)
        self.line_edit_user.setFrame(False)
        self.line_edit_user.setTextMargins(8, 0, 4, 1)
        self.line_edit_user.setFixedWidth(297)
        self.line_edit_user.setFixedHeight(26)
        self.line_edit_user.move(40, 1)

        # ---------- Password ----------

        password_label = QLabel("Contraseña", self)
        password_label.move(90, 170)

        password_frame = QFrame(self)
        password_frame.setFrameShape(QFrame.StyledPanel)
        password_frame.setFixedWidth(338)
        password_frame.setFixedHeight(28)
        password_frame.move(90, 196)

        password_icon = QLabel(password_frame)
        password_icon.setPixmap(
            QPixmap("./images/PasswordIcon.png").scaled(
                20, 20, Qt.KeepAspectRatio, Qt.SmoothTransformation))
        password_icon.move(10, 4)

        self.line_edit_password = QLineEdit(password_frame)
        self.line_edit_password.setFrame(False)
        self.line_edit_password.setEchoMode(QLineEdit.Password)
        self.line_edit_password.setTextMargins(8, 0, 4, 1)
        self.line_edit_password.setFixedWidth(297)
        self.line_edit_password.setFixedHeight(26)
        self.line_edit_password.move(40, 1)

        # ---------- Confirm Password ----------

        confirm_password_label = QLabel("Confirmar Contraseña", self)
        confirm_password_label.move(90, 224)

        confirm_password_frame = QFrame(self)
        confirm_password_frame.setFrameShape(QFrame.StyledPanel)
        confirm_password_frame.setFixedWidth(338)
        confirm_password_frame.setFixedHeight(28)
        confirm_password_frame.move(90, 250)

        confirm_password_icon = QLabel(confirm_password_frame)
        confirm_password_icon.setPixmap(
            QPixmap("./images/PasswordIcon.png").scaled(
                20, 20, Qt.KeepAspectRatio, Qt.SmoothTransformation))
        confirm_password_icon.move(10, 4)

        self.line_edit_confirm_password = QLineEdit(confirm_password_frame)
        self.line_edit_confirm_password.setFrame(False)
        self.line_edit_confirm_password.setEchoMode(QLineEdit.Password)
        self.line_edit_confirm_password.setTextMargins(8, 0, 4, 1)
        self.line_edit_confirm_password.setFixedWidth(297)
        self.line_edit_confirm_password.setFixedHeight(26)
        self.line_edit_confirm_password.move(40, 1)

        # ---------- Buttons ----------

        sign_in_button = QPushButton("Registrarse", self)
        sign_in_button.setFixedWidth(175)
        sign_in_button.setFixedHeight(28)
        sign_in_button.move(170, 300)

        login_button = QPushButton("Volver a Login", self)
        login_button.setFixedWidth(175)
        login_button.setFixedHeight(28)
        login_button.move(170, 334)

        cancel_button = QPushButton("Cancelar", self)
        cancel_button.setFixedWidth(135)
        cancel_button.setFixedHeight(28)
        cancel_button.move(192, 368)

        # ---------- Button's Events ----------

        sign_in_button.clicked.connect(self.sign_in)
        login_button.clicked.connect(self.login)
        cancel_button.clicked.connect(self.close)
Пример #26
0
class msh_window_class(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        self.setWindowFlags(QtCore.Qt.Dialog | QtCore.Qt.WindowSystemMenuHint)
        self.setWindowModality(QtCore.Qt.WindowModal)

        global par
        par = parent

        global int_lng
        int_lng = par.interface_lng_val

        global full_dir
        full_dir = parent.full_dir
        self.t1 = MyThread(full_dir)

        # ------------------------------------Первый блок формы--------------------------------------#

        self.mesh_choose_lbl = QLabel()
        self.mesh_choose_lbl_hbox = QHBoxLayout()
        self.mesh_choose_lbl_hbox.addWidget(self.mesh_choose_lbl)
        self.radio_1 = QRadioButton()
        self.radio_1.toggled.connect(self.on_radio_1_clicked)
        self.radio_2 = QRadioButton()
        self.radio_2.toggled.connect(self.on_radio_2_clicked)
        self.mesh_choose_grid = QGridLayout()
        self.mesh_choose_grid.addWidget(self.radio_1, 0, 0)
        self.mesh_choose_grid.addWidget(self.radio_2, 0, 1)
        self.mesh_choose_frame = QFrame()
        self.mesh_choose_frame.setLayout(self.mesh_choose_grid)
        self.mesh_choose_hbox = QHBoxLayout()
        self.mesh_choose_hbox.addWidget(self.mesh_choose_frame)

        # ------------------------------------Второй блок формы--------------------------------------#

        self.fmtf_radio = QRadioButton("Импорт 2D-сетки")
        self.f3Dmtf_radio = QRadioButton("Импорт 3D-сетки")
        self.import_hbox = QHBoxLayout()
        self.import_hbox.addWidget(self.fmtf_radio)
        self.import_hbox.addWidget(self.f3Dmtf_radio)

        self.mesh_label = QLabel("Путь: ")
        self.mesh_edit = QLineEdit()
        self.mesh_edit.setEnabled(False)
        self.mesh_edit.setFixedSize(290, 25)
        self.path_button = QPushButton("...")
        self.path_button.setFixedSize(25, 25)

        self.import_prs_hbox = QHBoxLayout()
        self.import_prs_hbox.addWidget(self.mesh_label)
        self.import_prs_hbox.addWidget(self.mesh_edit)
        self.import_prs_hbox.addWidget(self.path_button)
        self.path_button.clicked.connect(self.on_path_choose)

        self.prs_grid = QGridLayout()
        self.prs_grid.addLayout(self.import_hbox, 0, 0)
        self.prs_grid.addLayout(self.import_prs_hbox, 1, 0)
        self.prs_frame = QFrame()
        self.prs_frame.setStyleSheet(
            open("./styles/properties_form_style.qss", "r").read())
        self.prs_frame.setLayout(self.prs_grid)
        self.prs_frame.setEnabled(False)
        self.prs_frame.setStyleSheet("border-color: darkgray;")
        self.prs_hbox = QHBoxLayout()
        self.prs_hbox.addWidget(self.prs_frame)

        # ------------------------------------Третий блок формы--------------------------------------#

        self.chc_label = QLabel()
        self.chc_label.setEnabled(False)
        self.chc_lbl_hbox = QHBoxLayout()
        self.chc_lbl_hbox.addWidget(self.chc_label)
        self.nf_radio = QRadioButton()
        self.nf_radio.toggled.connect(self.on_nf_clicked)
        self.cf_radio = QRadioButton()
        self.cf_radio.toggled.connect(self.on_cf_clicked)
        self.icon = self.style().standardIcon(QStyle.SP_DirOpenIcon)
        self.chc_button = QPushButton()
        self.chc_button.setFixedSize(30, 30)
        self.chc_button.setIcon(self.icon)
        self.chc_button.setEnabled(False)
        self.chc_button.clicked.connect(self.on_chc_clicked)
        self.chc_grid = QGridLayout()
        self.chc_grid.addWidget(self.nf_radio, 0, 0)
        self.chc_grid.addWidget(self.cf_radio, 0, 1)
        self.chc_grid.addWidget(self.chc_button, 0, 2)
        self.chc_frame = QFrame()
        self.chc_frame.setFixedWidth(400)
        self.chc_frame.setEnabled(False)
        self.chc_frame.setStyleSheet("border-color: darkgray;")
        self.chc_frame.setLayout(self.chc_grid)
        self.chc_hbox = QHBoxLayout()
        self.chc_hbox.addWidget(self.chc_frame)

        # ------------------------------------Четвертый блок формы--------------------------------------#

        self.mesh_type_label = QLabel('Выберите тип сетки:')
        self.bm = QRadioButton("blockMesh")
        self.bm.setChecked(True)
        self.shm = QRadioButton("snappyHexMesh")
        self.mesh_type_vbox = QVBoxLayout()
        self.mesh_type_vbox.addWidget(self.bm)
        self.mesh_type_vbox.addWidget(self.shm)

        self.mesh_label = QLabel()
        self.mesh_name = QLineEdit()

        self.mesh_name.setFixedSize(214, 25)
        regexp = QtCore.QRegExp('[А-яА-Яa-zA-Z0-9\_]+')
        validator = QtGui.QRegExpValidator(regexp)
        self.mesh_name.setValidator(validator)

        self.prj_path_label = QLabel()
        self.prj_path_name = QLineEdit()
        self.prj_path_name.setEnabled(False)
        self.prj_path_name.setFixedSize(214, 25)

        self.prj_grid = QGridLayout()
        self.prj_grid.addWidget(self.mesh_type_label,
                                0,
                                0,
                                alignment=QtCore.Qt.AlignCenter)
        self.prj_grid.addLayout(self.mesh_type_vbox,
                                0,
                                1,
                                alignment=QtCore.Qt.AlignCenter)
        self.prj_grid.addWidget(self.mesh_label,
                                1,
                                0,
                                alignment=QtCore.Qt.AlignCenter)
        self.prj_grid.addWidget(self.mesh_name,
                                1,
                                1,
                                alignment=QtCore.Qt.AlignCenter)
        self.prj_grid.addWidget(self.prj_path_label,
                                2,
                                0,
                                alignment=QtCore.Qt.AlignCenter)
        self.prj_grid.addWidget(self.prj_path_name,
                                2,
                                1,
                                alignment=QtCore.Qt.AlignCenter)

        self.prj_frame = QFrame()
        self.prj_frame.setFixedWidth(400)
        self.prj_frame.setEnabled(False)
        self.prj_frame.setStyleSheet("border-color: darkgray;")
        self.prj_frame.setFrameShape(QFrame.Panel)
        self.prj_frame.setFrameShadow(QFrame.Sunken)
        self.prj_frame.setLayout(self.prj_grid)
        self.prj_grid_vbox = QVBoxLayout()
        self.prj_grid_vbox.addWidget(self.prj_frame)

        # ---------------------Кнопки сохранения и отмены и их блок-------------------------#

        self.save_button = QPushButton()
        self.save_button.setFixedSize(80, 25)
        self.save_button.clicked.connect(self.on_save_clicked)
        self.save_button.setEnabled(False)
        self.cancel_button = QPushButton()
        self.cancel_button.setFixedSize(80, 25)
        self.cancel_button.clicked.connect(self.on_cancel_clicked)
        self.buttons_hbox = QHBoxLayout()
        self.buttons_hbox.addWidget(self.save_button)
        self.buttons_hbox.addWidget(self.cancel_button)

        # -------------------------Фрейм формы---------------------------#

        self.form_grid = QGridLayout()
        self.form_grid.addLayout(self.mesh_choose_hbox,
                                 0,
                                 0,
                                 alignment=QtCore.Qt.AlignCenter)
        self.form_grid.addLayout(self.prs_hbox,
                                 1,
                                 0,
                                 alignment=QtCore.Qt.AlignCenter)
        self.form_grid.addLayout(self.chc_lbl_hbox,
                                 2,
                                 0,
                                 alignment=QtCore.Qt.AlignCenter)
        self.form_grid.addLayout(self.chc_hbox,
                                 3,
                                 0,
                                 alignment=QtCore.Qt.AlignCenter)
        self.form_grid.addLayout(self.prj_grid_vbox,
                                 4,
                                 0,
                                 alignment=QtCore.Qt.AlignCenter)
        self.form_grid.addLayout(self.buttons_hbox,
                                 5,
                                 0,
                                 alignment=QtCore.Qt.AlignCenter)
        self.form_frame = QFrame()
        self.form_frame.setStyleSheet(
            open("./styles/properties_form_style.qss", "r").read())
        self.form_frame.setLayout(self.form_grid)
        self.form_vbox = QVBoxLayout()
        self.form_vbox.addWidget(self.form_frame)

        # --------------------Размещение на форме всех компонентов---------#

        self.form = QFormLayout()
        self.form.addRow(self.form_vbox)
        self.setLayout(self.form)

        # --------------------Определяем параметры интерфейса окна---------#

        if int_lng == 'Russian':
            self.radio_1.setText("Внешняя сетка")
            self.radio_2.setText("OpenFOAM-сетка")
            self.fmtf_radio.setText("Импорт 2D-сетки")
            self.f3Dmtf_radio.setText("Импорт 3D-сетки")
            self.chc_label.setText(
                "Создайте новую сетку или откройте существующую")
            self.nf_radio.setText("Создать новую")
            self.cf_radio.setText("Открыть существующую")
            self.mesh_type_label.setText("Выберите тип сетки:")
            self.mesh_label.setText("Название сетки:")
            self.prj_path_label.setText("Путь:")
            self.save_button.setText("Сохранить")
            self.cancel_button.setText("Отмена")
        elif int_lng == 'English':
            self.radio_1.setText("External mesh")
            self.radio_2.setText("OpenFOAM-mesh")
            self.fmtf_radio.setText("2D-mesh import")
            self.f3Dmtf_radio.setText("3D-mesh import")
            self.chc_label.setText(
                "Create a new mesh or open an existing mesh")
            self.nf_radio.setText("Create new mesh")
            self.cf_radio.setText("Open existing mesh")
            self.mesh_type_label.setText("Select mesh type:")
            self.mesh_label.setText("Mesh name:")
            self.prj_path_label.setText("Path:")
            self.save_button.setText("Save")
            self.cancel_button.setText("Cancel")

    # ------------------------Функции связанные с формой-----------------------------#

    # .....Функция, запускаемая при нажатии радио-кнопки "Внешняя сетка"......#

    def on_radio_1_clicked(self):
        self.prs_frame.setEnabled(True)
        self.chc_frame.setEnabled(False)
        self.prj_frame.setEnabled(False)
        self.chc_label.setEnabled(False)
        self.prs_frame.setStyleSheet("border-color: dimgray;")
        self.chc_frame.setStyleSheet("border-color: darkgray;")
        self.prj_frame.setStyleSheet("border-color: darkgray;")
        self.prj_path_name.setText("")

    # .....Функция, запускаемая при нажатии радио-кнопки "OpenFOAM сетка"......#

    def on_radio_2_clicked(self):
        self.prs_frame.setEnabled(False)
        self.chc_frame.setEnabled(True)
        self.chc_label.setEnabled(True)
        self.chc_frame.setStyleSheet("border-color: dimgray;")
        self.prs_frame.setStyleSheet("border-color: darkgray;")
        self.prj_path_name.setText(full_dir + '/system')
        self.save_button.setEnabled(True)

    # .....Функция определения пути до внешней сетки......#

    def on_path_choose(self):
        global mesh_dir
        user = getpass.getuser()
        mesh_dir = QFileDialog.getOpenFileName(directory="/home/" + user)
        mesh_reg = re.compile(r"\S*(?<=[\/])\S*msh")
        mesh_mas = mesh_reg.findall(mesh_dir)

        if mesh_mas != []:
            self.mesh_edit.setText(mesh_dir)
        else:
            dialog = QMessageBox(QMessageBox.Critical,
                                 "Внимание!",
                                 "Это не файл сетки. Выберите другой файл",
                                 buttons=QMessageBox.Ok)
            result = dialog.exec_()

        self.save_button.setEnabled(True)

#......Функция по завершению генерации внешней сетки......#

    def on_finished(self):
        global mas

        if proc.returncode == 0:

            file = open(full_dir + "/constant/polyMesh/boundary", 'r')
            data = file.read()
            file.close()

            struct_reg = re.compile(r"\S*\n\s*(?=[{])")
            struct_mas = struct_reg.findall(data)

            i = 1
            mas = []
            for elem in range(len(struct_mas) - 1):
                div = struct_mas[i].split("\n")
                i = i + 1
                mas.append(div[0])

            file_U = open(full_dir + "/0/U", 'a')
            file_U.write("\n{\n")
            for el in range(len(mas)):
                file_U.write(
                    "    " + mas[el] +
                    "\n    {\n        type            empty;\n    }\n")
            file_U.write("}")
            file_U.close()

            file_T = open(full_dir + "/0/T", 'a')
            file_T.write("\n{\n")
            for el in range(len(mas)):
                file_T.write(
                    "    " + mas[el] +
                    "\n    {\n        type            empty;\n    }\n")
            file_T.write("}")
            file_T.close()

            file_p = open(full_dir + "/0/p", 'a')
            file_p.write("\n{\n")
            for el in range(len(mas)):
                file_p.write(
                    "    " + mas[el] +
                    "\n    {\n        type            empty;\n    }\n")
            file_p.write("}")
            file_p.close()

            par.listWidget.clear()
            par.item = QListWidgetItem("Расчетная сетка успешно сгенерирована",
                                       par.listWidget)
            par.color = QtGui.QColor("green")
            par.item.setTextColor(par.color)
            par.listWidget.addItem(par.item)

            par.task_open.setEnabled(True)

            self.close()
        else:
            par.item = QListWidgetItem("Расчетная сетка не сгенерирована",
                                       par.listWidget)
            par.color = QtGui.QColor("red")
            par.item.setTextColor(par.color)
            par.listWidget.addItem(par.item)

    # .....Функция, запускаемая при нажатии радио-кнопки "создать новую сетку OpenFOAM"......#

    def on_nf_clicked(self):
        self.prj_path_label.setEnabled(True)
        self.prj_frame.setEnabled(True)
        self.prj_frame.setStyleSheet("border-color: dimgray;")
        self.chc_button.setEnabled(False)

    # .....Функция, запускаемая при нажатии радио-кнопки "открыть имеющуюся сетку OpenFOAM"......#

    def on_cf_clicked(self):
        self.prj_path_label.setEnabled(False)
        self.prj_frame.setEnabled(False)
        self.prj_frame.setStyleSheet("border-color: darkgray;")
        self.chc_button.setEnabled(True)
        self.prj_path_name.setText('')

    # .....Функция, запускаемая при нажатии кнопки "выбрать существующую"......#

    def on_chc_clicked(self):
        global prj_path_cur
        global pickles_dir
        global pd_2

        prj_dir = QFileDialog.getExistingDirectory(self,
                                                   directory=full_dir +
                                                   '/system/')
        prj_path_cur, pickles_dir = os.path.split(prj_dir)

        pd_1, pd_2 = pickles_dir.split("_")

        initial_path = prj_dir + '/' + 'initial.pkl'

        if os.path.exists(initial_path) == True:
            self.prj_path_name.setText(prj_dir)
            self.save_button.setEnabled(True)
            self.mesh_name.setText(pd_1)
            if pd_2 == 'blockMesh':
                self.bm.setChecked(True)
                par.on_mesh_type_get(pd_2)
            elif pd_2 == 'snappyHexMesh':
                self.shm.setChecked(True)
                par.on_mesh_type_get(pd_2)

            self.prj_frame.setEnabled(True)
            self.prj_path_name.setEnabled(False)
        else:
            if int_lng == 'Russian':
                dialog = QMessageBox(
                    QMessageBox.Critical,
                    "Внимание!",
                    "Это не директория сетки или в ней отсутствуют все необходимые файлы",
                    buttons=QMessageBox.Ok)
            elif int_lng == 'English':
                dialog = QMessageBox(
                    QMessageBox.Critical,
                    "Attention!",
                    "This is not a grid directory, or all necessary files are missing in it",
                    buttons=QMessageBox.Ok)
            result = dialog.exec_()

    # ....................Функция, запускаемая при нажатии кнопки "сохранить"....................#

    def on_save_clicked(self):
        global pckls_path

        msh_lbl_widget = par.tdw_grid.itemAtPosition(0, 2)
        msh_path_lbl_widget = par.tdw_grid.itemAtPosition(0, 3)

        if msh_lbl_widget != None:
            par.tdw_grid.removeWidget(msh_lbl_widget, 0, 2)
        if msh_path_lbl_widget != None:
            par.tdw_grid.removeWidget(msh_path_lbl_widget, 0, 3)

        full_dir = par.full_dir
        if self.radio_1.isChecked():

            f = open(full_dir + '/MESH_BASH', 'w')
            if self.fmtf_radio.isChecked():
                f.write('#!/bin/sh' + '\n' + '. /opt/openfoam4/etc/bashrc' +
                        '\n' + 'fluentMeshToFoam ' + mesh_dir + '\n' + 'exit')
                f.close()

            elif self.f3Dmtf_radio.isChecked():
                f.write('#!/bin/sh' + '\n' + '. /opt/openfoam4/etc/bashrc' +
                        '\n' + 'fluent3DMeshToFoam ' + mesh_dir + '\n' +
                        'exit')
                f.close()

            self.t1.start()

            shutil.copytree("./matches/0", full_dir + "/0")

            par.msh_visual.setEnabled(True)

        elif self.radio_2.isChecked():
            global mesh_name_txt

            easy_lbl = QLabel()
            par.cdw.setTitleBarWidget(easy_lbl)
            par.cdw.setWidget(easy_lbl)

            mesh_name_txt = self.mesh_name.text()
            msh_lbl = QLabel()
            if int_lng == 'Russian':
                msh_lbl.setText('Путь до расчетной сетки:')
            elif int_lng == 'English':
                msh_lbl.setText('Path to mesh file:')

            if self.bm.isChecked() == True:
                pd_2 = 'blockMesh'
            elif self.shm.isChecked() == True:
                pd_2 = 'snappyHexMesh'

            msh_lbl.setStyleSheet("border-style: none;" "font-size: 10pt;")
            msh_path_lbl = QLineEdit()
            msh_path_lbl.setStyleSheet("background-color: white;"
                                       "font-size: 10pt;"
                                       "color: green;")
            msh_path_lbl.setFixedSize(500, 25)
            msh_path_lbl.setText(par.full_dir + '/system/' + mesh_name_txt +
                                 "_" + pd_2)
            msh_path_lbl.setEnabled(False)

            par.tdw_grid.addWidget(msh_lbl,
                                   0,
                                   2,
                                   alignment=QtCore.Qt.AlignCenter)
            par.tdw_grid.addWidget(msh_path_lbl,
                                   0,
                                   3,
                                   alignment=QtCore.Qt.AlignCenter)

            self.clear_label = QLabel()
            if self.nf_radio.isChecked() == True:
                if self.mesh_name.text() == '':
                    if int_lng == 'Russian':
                        dialog = QMessageBox(QMessageBox.Critical,
                                             "Внимание!",
                                             "Укажите название сетки",
                                             buttons=QMessageBox.Ok)
                    elif int_lng == 'English':
                        dialog = QMessageBox(QMessageBox.Critical,
                                             "Attention!",
                                             "Specify name mesh",
                                             buttons=QMessageBox.Ok)
                    result = dialog.exec_()
                else:

                    if self.bm.isChecked() == True:
                        par.addDockWidget(QtCore.Qt.BottomDockWidgetArea,
                                          par.serv_mes)
                        pckls_path = full_dir + '/system/'
                        pd_2_cur = 'blockMesh'
                        bmd_form = bmd_window_class(self, par, pckls_path,
                                                    mesh_name_txt, pd_2_cur)
                        par.ffw.setWidget(bmd_form)
                        self.close()

                        par.cdw.setWidget(self.clear_label)
                        par.cdw.setTitleBarWidget(self.clear_label)

                        par.setCentralWidget(par.ffw)

                        ffw_label = QLabel()
                        par.ffw.setTitleBarWidget(par.ffw_frame)
                        par.ffw_label.setText(
                            "Форма подготовки расчетной сетки: " +
                            "<font color='peru'>" + 'blockMesh' + "</font>")
                        par.ffw_label.setStyleSheet("border-style: none;"
                                                    "font-size: 9pt;")

                        dir_system_name = os.path.basename(full_dir +
                                                           '/system')
                        if dir_system_name:
                            item_system = QtGui.QStandardItem(dir_system_name)

                            el_system = 'blockMeshDict'
                            child_item_system = QtGui.QStandardItem(el_system)
                            child_item_system.setForeground(
                                QtGui.QColor('navy'))
                            item_system.setChild(3, 0, child_item_system)

                        if os.path.basename(full_dir +
                                            '/system/blockMeshDict'):
                            dir_0_name = os.path.basename(full_dir + '/0')

                            item_0 = QtGui.QStandardItem(dir_0_name)
                            files_0 = ['D', 'T']
                            j = 0
                            index = par.treeview.model.index(2, 0)
                            par.treeview.expand(index)
                            for el_0 in files_0:
                                child_item_0 = QtGui.QStandardItem(el_0)
                                child_item_0.setForeground(
                                    QtGui.QColor('navy'))
                                item_0.setChild(j, 0, child_item_0)
                                j = j + 1

                    elif self.shm.isChecked() == True:
                        par.addDockWidget(QtCore.Qt.BottomDockWidgetArea,
                                          par.serv_mes)
                        pckls_path = full_dir + '/system/'
                        pd_2_cur = 'snappyHexMesh'
                        shmd_form = shmd_window_class(self, par, pckls_path,
                                                      mesh_name_txt, pd_2_cur)
                        par.ffw.setWidget(shmd_form)
                        self.close()

                        par.cdw.setWidget(self.clear_label)
                        par.cdw.setTitleBarWidget(self.clear_label)

                        par.setCentralWidget(par.ffw)

                        ffw_label = QLabel()
                        par.ffw.setTitleBarWidget(par.ffw_frame)
                        par.ffw_label.setText(
                            "Форма подготовки расчетной сетки: " +
                            "<font color='peru'>" + 'snappyHexMesh' +
                            "</font>")
                        par.ffw_label.setStyleSheet("border-style: none;"
                                                    "font-size: 9pt;")

                        dir_system_name = os.path.basename(
                            full_dir + '/system/snappyHexMeshDict')
                        if dir_system_name:
                            item_system = QtGui.QStandardItem(dir_system_name)

                            el_system = 'snappyHexMeshDict'
                            child_item_system = QtGui.QStandardItem(el_system)
                            child_item_system.setForeground(
                                QtGui.QColor('navy'))
                            item_system.setChild(3, 0, child_item_system)

                        if os.path.basename(full_dir +
                                            '/system/snappyHexMeshDict'):
                            dir_0_name = os.path.basename(full_dir + '/0')

                            item_0 = QtGui.QStandardItem(dir_0_name)
                            files_0 = ['D', 'T']
                            j = 0
                            index = par.treeview.model.index(2, 0)
                            par.treeview.expand(index)
                            for el_0 in files_0:
                                child_item_0 = QtGui.QStandardItem(el_0)
                                child_item_0.setForeground(
                                    QtGui.QColor('navy'))
                                item_0.setChild(j, 0, child_item_0)
                                j = j + 1

                    if os.path.exists(pckls_path +
                                      self.mesh_name.text()) == True:
                        msh_msg_box = QMessageBox()
                        if int_lng == 'Russian':
                            msh_msg_box.setText(
                                "Расчетная сетка с таким именем существует")
                            msh_msg_box.setInformativeText(
                                "Заменить существующую сетку?")
                        elif int_lng == 'English':
                            msh_msg_box.setText(
                                "A calculated mesh with this name exists")
                            msh_msg_box.setInformativeText(
                                "Replace an existing mesh?")

                        msh_msg_box.setStandardButtons(QMessageBox.Save
                                                       | QMessageBox.Discard)
                        msh_msg_box.setDefaultButton(QMessageBox.Save)
                        ret = msh_msg_box.exec_()

                        if ret == QMessageBox.Save:
                            # Save was clicked
                            shutil.rmtree(pckls_path)
                            self.close()
                        elif ret == QMessageBox.Discard:
                            # Don't save was clicked
                            self.close()

            elif self.cf_radio.isChecked() == True:

                if pd_2 == 'blockMesh':

                    par.addDockWidget(QtCore.Qt.BottomDockWidgetArea,
                                      par.serv_mes)
                    pckls_path = full_dir + '/system/'
                    pd_2_cur = 'blockMesh'
                    bmd_form = bmd_window_class(self, par, pckls_path,
                                                mesh_name_txt, pd_2_cur)
                    par.ffw.setWidget(bmd_form)

                    self.close()

                    par.cdw.setWidget(self.clear_label)
                    par.cdw.setTitleBarWidget(self.clear_label)

                    par.setCentralWidget(par.ffw)

                    ffw_label = QLabel()
                    par.ffw.setTitleBarWidget(par.ffw_frame)
                    par.ffw_label.setText(
                        "Форма подготовки расчетной сетки: " +
                        "<font color='peru'>" + 'blockMesh' + "</font>")
                    par.ffw_label.setStyleSheet("border-style: none;"
                                                "font-size: 9pt;")

                    dir_system_name = os.path.basename(full_dir + '/system')
                    if dir_system_name:
                        item_system = QtGui.QStandardItem(dir_system_name)

                        el_system = 'blockMeshDict'
                        child_item_system = QtGui.QStandardItem(el_system)
                        child_item_system.setForeground(QtGui.QColor('navy'))
                        item_system.setChild(3, 0, child_item_system)

                    if os.path.basename(full_dir + '/system/blockMeshDict'):
                        dir_0_name = os.path.basename(full_dir + '/0')

                        item_0 = QtGui.QStandardItem(dir_0_name)
                        files_0 = ['D', 'T']
                        j = 0
                        index = par.treeview.model.index(2, 0)
                        par.treeview.expand(index)
                        for el_0 in files_0:
                            child_item_0 = QtGui.QStandardItem(el_0)
                            child_item_0.setForeground(QtGui.QColor('navy'))
                            item_0.setChild(j, 0, child_item_0)
                            j = j + 1

                    el_system = 'blockMeshDict'
                    item_system = par.treeview.model.item(1, 0)
                    child_item_system = QtGui.QStandardItem(el_system)
                    child_item_system.setForeground(QtGui.QColor('navy'))
                    item_system.setChild(3, 0, child_item_system)

                elif pd_2 == 'snappyHexMesh':

                    par.addDockWidget(QtCore.Qt.BottomDockWidgetArea,
                                      par.serv_mes)
                    pckls_path = full_dir + '/system/'
                    pd_2_cur = 'snappyHexMesh'
                    shmd_form = shmd_window_class(self, par, pckls_path,
                                                  mesh_name_txt, pd_2_cur)
                    par.ffw.setWidget(shmd_form)

                    if os.path.exists(pckls_path + '/snappyHexMeshDict'):
                        outf = open(pckls_path + '/snappyHexMeshDict')
                        data = outf.read()
                        if int_lng == 'Russian':
                            par.outf_lbl.setText("Файл: " +
                                                 "<font color='peru'>" +
                                                 'snappyHexMeshDict' +
                                                 "</font>")
                        elif int_lng == 'English':
                            par.outf_lbl.setText("<font color='peru'>" +
                                                 'snappyHexMeshDict' +
                                                 "</font>" + " file")
                        par.outf_edit.setText(data)
                        par.cdw.setWidget(par.outf_scroll)

                        par.cdw.setTitleBarWidget(par.cdw_frame)
                    else:
                        empty_lbl = QLabel()
                        par.cdw.setWidget(empty_lbl)
                        par.cdw.setTitleBarWidget(empty_lbl)

                    el_system = 'snappyHexMeshDict'
                    item_system = par.treeview.model.item(1, 0)
                    child_item_system = QtGui.QStandardItem(el_system)
                    child_item_system.setForeground(QtGui.QColor('navy'))
                    item_system.setChild(3, 0, child_item_system)

                if int_lng == 'Russian':
                    msg_lbl = QLabel(
                        '<span style="color:blue">' +
                        'Загружены параметры сетки ' + self.mesh_name.text() +
                        '. Установите ее в качестве текущей, выполнив генерацию сетки'
                        + '</span>')
                elif int_lng == 'English':
                    msg_lbl = QLabel(
                        '<span style="color:blue">' +
                        'Loaded parameters of mesh ' + self.mesh_name.text() +
                        '. Set it as current, making mesh generation' +
                        '</span>')

                par.listWidget.clear()
                par.item = QListWidgetItem()
                par.listWidget.addItem(par.item)
                par.listWidget.setItemWidget(par.item, msg_lbl)

                self.close()

                par.msh_run.setEnabled(True)
                par.msh_visual.setEnabled(True)
                par.str_an_run.setEnabled(True)
                par.str_an_vis_run.setEnabled(True)
                par.on_prj_path_get(prj_path_cur, mesh_name_txt)

    def int_lng_path_return(self):
        return (int_lng)

# .....................Функция, запускаемая при нажатии кнопки "отмена"......................#

    def on_cancel_clicked(self):
        self.close()
    def initUI(self):
        labelTitulo = QLabel("CAPTURA DE ", self)
        labelTitulo.setFont(QFont("MS Shell Dlg 2", 11))
        labelTitulo.setStyleSheet('color:white')
        labelTitulo.move(300, 10)
        labelTitulo2 = QLabel("ALUMNOS", self)
        labelTitulo2.setFont(QFont("MS Shell Dlg 2", 11))
        labelTitulo2.setStyleSheet('color:white')
        labelTitulo2.move(390, 10)

        buttonGuardar = QPushButton("Grabar", self)
        buttonGuardar.setFixedWidth(135)
        buttonGuardar.setFixedHeight(28)
        buttonGuardar.move(150, 500)
        buttonGuardar.setIcon(QIcon("save.png"))
        buttonGuardar.setIconSize(QtCore.QSize(30, 30))

        buttonEscribir = QPushButton("Escribir", self)
        buttonEscribir.setFixedWidth(135)
        buttonEscribir.setFixedHeight(28)
        buttonEscribir.move(310, 500)
        buttonEscribir.setIcon(QIcon("excel.png"))
        buttonEscribir.setIconSize(QtCore.QSize(25, 25))

        buttonLimpiar = QPushButton("Limpiar", self)
        buttonLimpiar.setFixedWidth(135)
        buttonLimpiar.setFixedHeight(28)
        buttonLimpiar.move(470, 500)
        buttonLimpiar.setIcon(QIcon("limpiar.png"))
        buttonLimpiar.setIconSize(QtCore.QSize(25, 25))

        buttonGuardar.clicked.connect(self.guardar)
        buttonEscribir.clicked.connect(self.escribir)
        buttonLimpiar.clicked.connect(self.limpiar)

        labelNombre = QLabel("Nombre", self)
        labelNombre.setFont(QFont("MS Shell Dlg 2", 9))
        labelNombre.setStyleSheet('color:white')
        labelNombre.move(7, 60)
        frameNombre = QFrame(self)
        frameNombre.setFixedWidth(285)
        frameNombre.setFixedHeight(28)
        frameNombre.move(60, 60)
        self.lineEditNombre = QLineEdit(frameNombre)
        self.lineEditNombre.setFrame(True)
        self.lineEditNombre.setTextMargins(7, 1, 6, 1)
        self.lineEditNombre.setFixedWidth(245)
        self.lineEditNombre.setFixedHeight(29)
        self.lineEditNombre.move(40, 1)

        labelApellido_Paterno = QLabel("Apellido Paterno", self)
        labelApellido_Paterno.setFont(QFont("MS Shell Dlg 2", 9))
        labelApellido_Paterno.setStyleSheet('color:white')
        labelApellido_Paterno.setLineWidth(8)
        labelApellido_Paterno.move(7, 120)
        frameApellido_Paterno = QFrame(self)
        frameApellido_Paterno.setFixedWidth(290)
        frameApellido_Paterno.setFixedHeight(29)
        frameApellido_Paterno.move(60, 120)
        self.lineEditApellido_Paterno = QLineEdit(frameApellido_Paterno)
        self.lineEditApellido_Paterno.setFrame(True)
        self.lineEditApellido_Paterno.setTextMargins(7, 1, 6, 1)
        self.lineEditApellido_Paterno.setFixedWidth(245)
        self.lineEditApellido_Paterno.setFixedHeight(29)
        self.lineEditApellido_Paterno.move(40, 1)

        labelApellido_Materno = QLabel("Apellido Materno", self)
        labelApellido_Materno.setFont(QFont("MS Shell Dlg 2", 9))
        labelApellido_Materno.setStyleSheet('color:white')
        labelApellido_Materno.move(7, 180)
        frameApellido_Materno = QFrame(self)
        frameApellido_Materno.setFixedWidth(290)
        frameApellido_Materno.setFixedHeight(29)
        frameApellido_Materno.move(60, 180)
        self.lineEditApellido_Materno = QLineEdit(frameApellido_Materno)
        self.lineEditApellido_Materno.setFrame(True)
        self.lineEditApellido_Materno.setTextMargins(7, 1, 6, 1)
        self.lineEditApellido_Materno.setFixedWidth(245)
        self.lineEditApellido_Materno.setFixedHeight(29)
        self.lineEditApellido_Materno.move(40, 1)

        labelMatricula = QLabel("Matrícula", self)
        labelMatricula.setFont(QFont("MS Shell Dlg 2", 9))
        labelMatricula.setStyleSheet('color:white')
        labelMatricula.move(7, 240)
        frameMatricula = QFrame(self)
        frameMatricula.setFixedWidth(290)
        frameMatricula.setFixedHeight(29)
        frameMatricula.move(60, 240)
        self.lineEditMatricula = QLineEdit(frameMatricula)
        self.lineEditMatricula.setFrame(True)
        self.lineEditMatricula.setTextMargins(7, 1, 6, 1)
        self.lineEditMatricula.setFixedWidth(245)
        self.lineEditMatricula.setFixedHeight(29)
        self.lineEditMatricula.move(40, 1)
        self.lineEditMatricula.setValidator(QIntValidator())

        labelEdad = QLabel("Edad", self)
        labelEdad.setFont(QFont("MS Shell Dlg 2", 9))
        labelEdad.setStyleSheet('color:white')
        labelEdad.move(7, 300)
        frameEdad = QFrame(self)
        frameEdad.setFixedWidth(290)
        frameEdad.setFixedHeight(29)
        frameEdad.move(60, 300)
        self.lineEditEdad = QLineEdit(frameEdad)
        self.lineEditEdad.setFrame(True)
        self.lineEditEdad.setTextMargins(7, 1, 6, 1)
        self.lineEditEdad.setFixedWidth(245)
        self.lineEditEdad.setFixedHeight(29)
        self.lineEditEdad.move(40, 1)
        self.lineEditEdad.setValidator(QIntValidator())

        labelCalle = QLabel("Calle y Numero", self)
        labelCalle.setFont(QFont("MS Shell Dlg 2", 9))
        labelCalle.setStyleSheet('color:white')
        labelCalle.move(7, 360)
        frameCalle = QFrame(self)
        frameCalle.setFixedWidth(290)
        frameCalle.setFixedHeight(29)
        frameCalle.move(60, 360)
        self.lineEditCalle = QLineEdit(frameCalle)
        self.lineEditCalle.setFrame(True)
        self.lineEditCalle.setTextMargins(7, 1, 6, 1)
        self.lineEditCalle.setFixedWidth(245)
        self.lineEditCalle.setFixedHeight(29)
        self.lineEditCalle.move(40, 1)

        labelMunicipio = QLabel("Municipio", self)
        labelMunicipio.setFont(QFont("MS Shell Dlg 2", 9))
        labelMunicipio.setStyleSheet('color:white')
        labelMunicipio.move(515, 60)

        self.comboBoxMunicipio = QComboBox(self)
        self.comboBoxMunicipio.addItems([
            "Apodaca", "Cadereyta Jimenez", "Escobedo", "Garcia", "Guadalupe",
            "Juarez", "Monterrey", "Salinas Victoria",
            "San Nicolas de los Garza", "San Pedro Garza Garcia",
            "Santa Catarina", "Santiago", "Cienega de Flores",
            "General Zuazua", "Pesqueria"
        ])
        self.comboBoxMunicipio.setCurrentIndex(-1)
        self.comboBoxMunicipio.setFixedWidth(290)
        self.comboBoxMunicipio.setFixedHeight(29)
        self.comboBoxMunicipio.move(400, 95)

        labelEstado = QLabel("Estado", self)
        labelEstado.setFont(QFont("MS Shell Dlg 2", 9))
        labelEstado.setStyleSheet('color:white')
        labelEstado.move(515, 150)
        self.comboBoxEstado = QComboBox(self)
        self.comboBoxEstado.addItems(["Nuevo Leon"])
        self.comboBoxEstado.setCurrentIndex(-1)
        self.comboBoxEstado.setFixedWidth(290)
        self.comboBoxEstado.setFixedHeight(29)
        self.comboBoxEstado.move(400, 175)

        labelBeca = QLabel("BECA %", self)
        labelBeca.setFont(QFont("MS Shell Dlg 2", 9))
        labelBeca.setStyleSheet('color:white')
        labelBeca.move(515, 240)
        self.radio_cero = QRadioButton('0%', self)
        self.radio_cero.setStyleSheet('color:white')
        self.radio_cero.move(400, 270)
        self.radio_25 = QRadioButton('25%', self)
        self.radio_25.setStyleSheet('color:white')
        self.radio_25.move(470, 270)
        self.radio_50 = QRadioButton('50%', self)
        self.radio_50.setStyleSheet('color:white')
        self.radio_50.move(540, 270)
        self.radio_cien = QRadioButton('100%', self)
        self.radio_cien.setStyleSheet('color:white')
        self.radio_cien.move(610, 270)

        self.Programacionbox = QCheckBox('Progra', self)
        self.Programacionbox.move(380, 340)
        self.Programacionbox.setFont(QFont("MS Shell Dlg 2", 9))
        self.Programacionbox.setStyleSheet('color:white')
        label_macion = QLabel("macion", self)
        label_macion.setFont(QFont("MS Shell Dlg 2", 9))
        label_macion.setStyleSheet('color:white')
        label_macion.move(434, 340)

        self.Contabilidadbox = QCheckBox('Contabilidad', self)
        self.Contabilidadbox.move(500, 340)
        self.Contabilidadbox.setFont(QFont("MS Shell Dlg 2", 9))
        self.Contabilidadbox.setStyleSheet('color:white')

        self.boxEstadistica = QCheckBox('Estadistica', self)
        self.boxEstadistica.move(610, 340)
        self.boxEstadistica.setFont(QFont("MS Shell Dlg 2", 9))
        self.boxEstadistica.setStyleSheet('color:white')

        self.Basebox = QCheckBox('Base de Datos', self)
        self.Basebox.move(380, 370)
        self.Basebox.setFont(QFont("MS Shell Dlg 2", 9))
        self.Basebox.setStyleSheet('color:white')

        self.Investigacionbox = QCheckBox('Investigación', self)
        self.Investigacionbox.move(500, 370)
        self.Investigacionbox.setFont(QFont("MS Shell Dlg 2", 9))
        self.Investigacionbox.setStyleSheet('color:white')
        Investigacion_label = QLabel("de Operaciones", self)
        Investigacion_label.move(595, 370)
        Investigacion_label.setFont(QFont("MS Shell Dlg 2", 9))
        Investigacion_label.setStyleSheet('color:white')
Пример #28
0
def setup_ui(self):
    # кнопки на левой боковой панели
    buttons_frame = QFrame()
    buttons_frame.setFixedWidth(150)
    buttons_frame.setFrameStyle(QFrame.StyledPanel)
    open_data_base_button = QPushButton('Выбрать запись')
    open_data_base_button.clicked.connect(
        self.open_data_base_button_clicked_slot)
    process_button = QPushButton('Отобразить')
    process_button.setEnabled(False)
    process_button.clicked.connect(self.process_button_clicked_slot)
    vbox = QVBoxLayout()

    vbox.addWidget(open_data_base_button)
    vbox.addWidget(process_button)
    vbox.addStretch(1)
    buttons_frame.setLayout(vbox)

    # область отображения данных
    # здесь будет располагаться таблица и график
    display_area_frame = QFrame()
    display_area_frame.setFrameStyle(QFrame.StyledPanel)
    # график
    graph_view = gl.GLViewWidget()

    # create three grids, add each to the view
    xgrid = gl.GLGridItem()
    ygrid = gl.GLGridItem()
    zgrid = gl.GLGridItem()
    graph_view.addItem(xgrid)
    graph_view.addItem(ygrid)
    graph_view.addItem(zgrid)

    # rotate x and y grids to face the correct direction
    xgrid.rotate(90, 0, 1, 0)
    ygrid.rotate(90, 1, 0, 0)

    # scale each grid differently
    xgrid.scale(0.2, 0.1, 0.1)
    ygrid.scale(0.2, 0.1, 0.1)
    zgrid.scale(0.1, 0.2, 0.1)

    # рамка таблицы
    table_frame = QFrame()
    table_frame.setFrameStyle(0)
    table_frame.setFrameShape(QFrame.StyledPanel)

    v_display_layout = QVBoxLayout()
    v_display_layout.addWidget(graph_view)
    v_display_layout.addWidget(table_frame)
    display_area_frame.setLayout(v_display_layout)

    # главный виджет - рамка, на ней располагаются элементы
    main_frame = QFrame()
    main_frame.setFrameStyle(0)
    main_frame.setFrameShape(QFrame.StyledPanel)
    self.setCentralWidget(main_frame)
    h_main_layout = QHBoxLayout()
    h_main_layout.addWidget(buttons_frame)
    h_main_layout.addWidget(display_area_frame)

    main_frame.setLayout(h_main_layout)
Пример #29
0
    def setupUI(self, animarBotones):

        paleta = QPalette()
        paleta.setColor(QPalette.Background, QColor(0, 0, 93))

        frame = QFrame(self)
        frame.setFrameShape(QFrame.NoFrame)
        frame.setFrameShadow(QFrame.Sunken)
        frame.setAutoFillBackground(True)
        frame.setPalette(paleta)
        frame.setFixedWidth(400)
        frame.setFixedHeight(84)
        frame.move(0, 0)

        labelIcono = QLabel(frame)
        labelIcono.setFixedWidth(40)
        labelIcono.setFixedHeight(40)
        labelIcono.setPixmap(
            QPixmap("mundo.png").scaled(40, 40, Qt.KeepAspectRatio,
                                        Qt.SmoothTransformation))
        labelIcono.move(37, 22)

        fuenteTitulo = QFont()
        fuenteTitulo.setPointSize(16)
        fuenteTitulo.setBold(True)

        labelTitulo = QLabel("<font color='white'>BIENVENIDO</font>", frame)
        labelTitulo.setFont(fuenteTitulo)
        labelTitulo.move(83, 20)

        frameUsuario = QFrame(self)
        frameUsuario.setFrameShape(QFrame.StyledPanel)
        frameUsuario.setFixedWidth(100)
        frameUsuario.setFixedHeight(28)
        frameUsuario.move(90, 50)

        self.lineEditUsuario1 = QLineEdit(frameUsuario)

        self.lineEditUsuario1.setReadOnly(True)
        self.lineEditUsuario1.setFrame(False)
        self.lineEditUsuario1.setTextMargins(8, 0, 4, 1)
        self.lineEditUsuario1.setFixedWidth(100)
        self.lineEditUsuario1.setFixedHeight(26)
        self.lineEditUsuario1.move(0, 1)

        fuenteSubtitulo = QFont()
        fuenteSubtitulo.setPointSize(9)

        labelSubtitulo = QLabel("<font color='white'"
                                "(Python).</font>", frame)
        labelSubtitulo.setFont(fuenteSubtitulo)
        labelSubtitulo.move(111, 46)

        self.button = ui_menu(self)
        self.button.setText("MIS CURSOS")
        self.button.setCursor(Qt.PointingHandCursor)
        self.button.setAutoDefault(False)
        self.button.setGeometry(40, 150, 160, 60)
        self.button.clicked.connect(self.abrirmenuuser)

        self.buttonDos = ui_menu(self)
        self.buttonDos.setText("UNIRSE A \nUN CURSO")
        self.buttonDos.setCursor(Qt.PointingHandCursor)
        self.buttonDos.setAutoDefault(False)
        self.buttonDos.setGeometry(220, 150, 160, 60)
        self.buttonDos.clicked.connect(self.openanadirclase)
Пример #30
0
    def initUI(self):

        fuenteSiacle = self.font()
        fuenteSiacle.setBold(True)
        fuenteSiacle.setPointSize(12)

        paletaBotones = self.palette()
        paletaBotones.setColor(QPalette.Background, QColor("#2EFEC8"))

        frameBotones = QFrame()
        frameBotones.setFrameStyle(QFrame.NoFrame)
        frameBotones.setAutoFillBackground(True)
        frameBotones.setPalette(paletaBotones)
        frameBotones.setFixedWidth(220)

        paletaPanel = self.palette()
        paletaPanel.setBrush(QPalette.Background, QBrush(QColor(255, 90, 0), Qt.SolidPattern))
        paletaPanel.setColor(QPalette.Foreground, Qt.white)

        labelSiacle = QLabel("ПАНЕЛЬ УПРАВЛЕНИЯ", frameBotones)
        labelSiacle.setAlignment(Qt.AlignCenter | Qt.AlignVCenter)
        labelSiacle.setFont(fuenteSiacle)
        labelSiacle.setAutoFillBackground(True)
        labelSiacle.setPalette(paletaPanel)
        labelSiacle.setFixedSize(220, 46)
        labelSiacle.move(0, 0)

        # ============================================================

        tamanioIcono = QSize(30, 30)

        botonNuevo = Boton(frameBotones)
        botonNuevo.setText(" Новый")
        botonNuevo.setToolTip("Новый клиент")
        botonNuevo.setCursor(Qt.PointingHandCursor)
        botonNuevo.move(-2, 45)

        botonActualizar = Boton(frameBotones)
        botonActualizar.setText(" Обновление")
        botonActualizar.setToolTip("Обновление клиента ")
        botonActualizar.setCursor(Qt.PointingHandCursor)
        botonActualizar.move(-2, 82)

        botonEliminar = Boton(frameBotones)
        botonEliminar.setText(" Удалить")
        botonEliminar.setToolTip("Удалить клиента")
        botonEliminar.setCursor(Qt.PointingHandCursor)
        botonEliminar.move(-2, 119)

        botonLimpiar = Boton(frameBotones)
        botonLimpiar.setText(" Закрыть")
        botonLimpiar.setToolTip("Закрыть бд")
        botonLimpiar.setCursor(Qt.PointingHandCursor)
        botonLimpiar.move(-2, 156)

        # ============================================================

        paletaSuscribete = self.palette()
        paletaSuscribete.setBrush(QPalette.Background, QBrush(QColor(135, 206, 250),
                                                              Qt.SolidPattern))

        fuenteSuscribete = self.font()
        fuenteSuscribete.setBold(True)
        fuenteSuscribete.setFamily("Arial")
        fuenteSuscribete.setPointSize(11)

        labelSuscribete = QLabel("<a href='https://t.me/yarosla_0v'>АВТОР</a>", frameBotones)

        labelSuscribete.setAlignment(Qt.AlignCenter | Qt.AlignVCenter)
        labelSuscribete.setOpenExternalLinks(True)
        labelSuscribete.setFont(fuenteSuscribete)
        labelSuscribete.setAutoFillBackground(True)
        labelSuscribete.setPalette(paletaSuscribete)
        labelSuscribete.setFixedSize(220, 46)
        labelSuscribete.move(0, 210)

        paletaFrame = self.palette()
        paletaFrame.setColor(QPalette.Background, QColor("blue"))

        frameBienvenido = QFrame()
        frameBienvenido.setFrameStyle(QFrame.NoFrame)
        frameBienvenido.setAutoFillBackground(True)
        frameBienvenido.setPalette(paletaFrame)
        frameBienvenido.setFixedHeight(46)

        # ============================================================

        paletaTitulo = self.palette()
        paletaTitulo.setColor(QPalette.Foreground, Qt.yellow)

        labelBienvenido = QLabel("Клиенты")
        labelBienvenido.setAlignment(Qt.AlignCenter)
        labelBienvenido.setFont(fuenteSiacle)
        labelBienvenido.setPalette(paletaTitulo)

        botonConfiguracion = QPushButton()
        botonConfiguracion.setIcon(QIcon("Imagenes/configuracion.png"))
        botonConfiguracion.setIconSize(QSize(24, 24))
        botonConfiguracion.setToolTip("Конфигурация")
        botonConfiguracion.setCursor(Qt.PointingHandCursor)
        botonConfiguracion.setFixedWidth(36)

        disenioFrame = QHBoxLayout()
        disenioFrame.addWidget(labelBienvenido, Qt.AlignCenter)
        disenioFrame.addStretch()
        disenioFrame.addWidget(botonConfiguracion)
        disenioFrame.setContentsMargins(0, 0, 5, 0)
        frameBienvenido.setLayout(disenioFrame)

        # ============================================================

        self.buscarLineEdit = QLineEdit()
        self.buscarLineEdit.setObjectName("Enter")
        self.buscarLineEdit.setPlaceholderText("Имя клента")
        self.buscarLineEdit.setMinimumSize(200, 26)

        botonBuscar = QPushButton("Поиск")
        botonBuscar.setObjectName("Поиск")
        botonBuscar.setCursor(Qt.PointingHandCursor)
        botonBuscar.setMinimumSize(60, 26)

        separadorTodos = QFrame()
        separadorTodos.setFrameShape(QFrame.VLine)
        separadorTodos.setFrameShadow(QFrame.Raised)
        separadorTodos.setFixedSize(1, 26)

        botonTodos = QPushButton("Все записи")
        botonTodos.setObjectName("Все записи")
        botonTodos.setCursor(Qt.PointingHandCursor)
        botonTodos.setMinimumSize(60, 26)

        nombreColumnas = ("Id", "Имя", "Фамилия", "Пол", "Дата рождения", "Страна",
                          "Телефон")

        menuMostrarOcultar = QMenu()
        for indice, columna in enumerate(nombreColumnas, start=0):
            accion = QAction(columna, menuMostrarOcultar)
            accion.setCheckable(True)
            accion.setChecked(True)
            accion.setData(indice)

            menuMostrarOcultar.addAction(accion)

        botonMostrarOcultar = QPushButton("Скрыть столбцы")
        botonMostrarOcultar.setCursor(Qt.PointingHandCursor)
        botonMostrarOcultar.setMenu(menuMostrarOcultar)
        botonMostrarOcultar.setMinimumSize(180, 26)

        disenioBuscar = QHBoxLayout()
        disenioBuscar.setSpacing(10)
        disenioBuscar.addWidget(self.buscarLineEdit)
        disenioBuscar.addWidget(botonBuscar)
        disenioBuscar.addWidget(separadorTodos)
        disenioBuscar.addWidget(botonTodos)
        disenioBuscar.addWidget(botonMostrarOcultar)

        self.tabla = QTableWidget()

        self.tabla.setEditTriggers(QAbstractItemView.NoEditTriggers)

        self.tabla.setDragDropOverwriteMode(False)

        self.tabla.setSelectionBehavior(QAbstractItemView.SelectRows)

        self.tabla.setSelectionMode(QAbstractItemView.SingleSelection)

        self.tabla.setTextElideMode(Qt.ElideRight)  # Qt.ElideNone

        self.tabla.setWordWrap(False)

        self.tabla.setSortingEnabled(False)

        self.tabla.setColumnCount(7)

        self.tabla.setRowCount(0)

        self.tabla.horizontalHeader().setDefaultAlignment(Qt.AlignHCenter | Qt.AlignVCenter |
                                                          Qt.AlignCenter)

        self.tabla.horizontalHeader().setHighlightSections(False)

        self.tabla.horizontalHeader().setStretchLastSection(True)

        self.tabla.verticalHeader().setVisible(False)

        self.tabla.setAlternatingRowColors(True)

        self.tabla.verticalHeader().setDefaultSectionSize(20)

        # self.tabla.verticalHeader().setHighlightSections(True)

        self.tabla.setHorizontalHeaderLabels(nombreColumnas)

        self.tabla.setContextMenuPolicy(Qt.CustomContextMenu)
        self.tabla.customContextMenuRequested.connect(self.menuContextual)

        for indice, ancho in enumerate((80, 240, 240, 140, 150, 130), start=0):
            self.tabla.setColumnWidth(indice, ancho)

        # ============================================================

        disenioBuscarTabla = QVBoxLayout()
        disenioBuscarTabla.addLayout(disenioBuscar)
        disenioBuscarTabla.addWidget(self.tabla)
        disenioBuscarTabla.setSpacing(8)
        disenioBuscarTabla.setContentsMargins(10, 10, 10, 0)

        disenioDerecho = QVBoxLayout()
        disenioDerecho.addWidget(frameBienvenido)
        disenioDerecho.addLayout(disenioBuscarTabla)
        disenioDerecho.setContentsMargins(0, 0, 0, 0)

        disenioFinal = QGridLayout()
        disenioFinal.addWidget(frameBotones, 0, 0)
        disenioFinal.addLayout(disenioDerecho, 0, 1)
        disenioFinal.setSpacing(0)
        disenioFinal.setContentsMargins(0, 0, 0, 0)

        self.setLayout(disenioFinal)

        self.copiarInformacion = QApplication.clipboard()

        botonNuevo.clicked.connect(self.Nuevo)
        botonActualizar.clicked.connect(self.Actualizar)
        botonEliminar.clicked.connect(self.Eliminar)
        botonLimpiar.clicked.connect(self.limpiarTabla)

        self.buscarLineEdit.returnPressed.connect(self.Buscar)
        botonBuscar.clicked.connect(self.Buscar)
        botonTodos.clicked.connect(self.Buscar)

        botonConfiguracion.clicked.connect(lambda: Configuracion(self).exec_())

        self.tabla.itemDoubleClicked.connect(self.Suscribete)

        menuMostrarOcultar.triggered.connect(self.mostrarOcultar)