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))
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))
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)
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))
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
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
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)
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
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
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())
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
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)
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)
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)
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)
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()
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()
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()
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
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()
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)
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);
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)
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)
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')
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)
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)
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)