Как убрать виджет из макета
У меня есть приложение, в котором есть 4 страницы и на 1-ой странице находится календарь и виджет с погодой, который после нажатия кнопки обрезается, так как находится в макете.
Я хочу убрать виджет с погодой из макета, однако не знаю как это правильно сделать.
До нажатия на кнопку:
После нажатия:
Как должно быть:
Вот сам код: (часть кода с погодой находится на 143 строке кода)
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
from ext import *
from main import App # +++
from part_1 import Main
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
#размер основного окн
self.resize(845, 535)
self.setFixedSize(QtCore.QSize(845,535))
#
self.setStyleSheet("background-color: rgb(245, 45, 45);")
#центральный виджет
self.centralwidget = QtWidgets.QWidget()
self.centralwidget.setObjectName("centralwidget")
self.setCentralWidget(self.centralwidget)
# Content horizontalLayout_2
self.Content = QtWidgets.QFrame(self.centralwidget)
self.Content.setStyleSheet("background-color: rgb(255, 255, 255);")
self.Content.setFrameShape(QtWidgets.QFrame.NoFrame)
self.Content.setFrameShadow(QtWidgets.QFrame.Raised)
self.Content.setObjectName("Content")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.Content)
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_2.setSpacing(0)
#виджет слева
self.frame_left_menu = QtWidgets.QFrame(self.Content)
self.frame_left_menu.setMinimumSize(QtCore.QSize(45, 0))
self.frame_left_menu.setStyleSheet("background-color: rgb(255, 255, 255); border: 0px solid; ")
self.frame_left_menu.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_left_menu.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_left_menu.setObjectName("frame_left_menu")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.frame_left_menu)
self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
self.frame_top_menus = QtWidgets.QFrame(self.frame_left_menu)
self.frame_top_menus.setFrameShape(QtWidgets.QFrame.NoFrame)
self.frame_top_menus.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_top_menus.setObjectName("frame_top_menus")
#указываем вертикальное выравнивание
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.frame_top_menus)
self.verticalLayout_4.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_4.setSpacing(10)
#домик
self.btn_page_1 = QtWidgets.QPushButton("", self.frame_top_menus)
self.btn_page_1.setIcon(QIcon('дом.png'))
self.btn_page_1.setIconSize(QSize(45,45))
self.btn_page_1.setMinimumSize(QtCore.QSize(0, 40))
self.btn_page_1.setStyleSheet('border: 0px solid red;')
self.btn_page_1.setObjectName("btn_page_1")
self.verticalLayout_4.addWidget(self.btn_page_1)
#Заметки
self.btn_page_2 = QtWidgets.QPushButton("", self.frame_top_menus)
self.btn_page_2.setIcon(QIcon('заметка1.png'))
self.btn_page_2.setIconSize(QSize(45,45))
self.btn_page_2.setMinimumSize(QtCore.QSize(0, 40))
self.btn_page_2.setStyleSheet('border: 0px solid red;')
self.btn_page_2.setObjectName("btn_page_2")
self.verticalLayout_4.addWidget(self.btn_page_2)
#погода
self.btn_page_3 = QtWidgets.QPushButton("", self.frame_top_menus)
self.btn_page_3.setIcon(QIcon('солнышко.png'))
self.btn_page_3.setIconSize(QSize(45,45))
self.btn_page_3.setMinimumSize(QtCore.QSize(0, 40))
self.btn_page_4 = QtWidgets.QPushButton('', self.frame_top_menus)
self.btn_page_4.setIcon(QIcon('папочка.png'))
self.btn_page_4.setIconSize(QSize(45, 45))
self.btn_page_4.setMinimumSize(QtCore.QSize(0, 40))
timer = QTimer(self)
timer.timeout.connect(self.showTime)
timer.start(1000)
font1 = QFont('Century Gothic', 13, QFont.Bold)
self.timewidget = QtWidgets.QLabel()
self.timewidget.setMinimumSize(QtCore.QSize(45,45))
self.timewidget.setAlignment(Qt.AlignBottom)
self.timewidget.setFont(font1)
self.btn_page_3.setObjectName("btn_page_3")
self.verticalLayout_4.addWidget(self.btn_page_3)
self.verticalLayout_3.addWidget(self.frame_top_menus, 0, QtCore.Qt.AlignTop)
self.horizontalLayout_2.addWidget(self.frame_left_menu)
self.verticalLayout_4.addWidget(self.btn_page_4)
self.frame_pages = QtWidgets.QFrame(self.Content)
self.frame_pages.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_pages.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_pages.setObjectName("frame_pages")
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.frame_pages)
self.verticalLayout_5.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.stackedWidget = QtWidgets.QStackedWidget(self.frame_pages)
self.stackedWidget.setMinimumSize(QtCore.QSize(800, 535))
self.stackedWidget.setObjectName("stackedWidget")
#1 страница
self.page_1 = QtWidgets.QWidget()
self.page_1.setObjectName("page_1")
self.verticalLayout_7 = QtWidgets.QVBoxLayout(self.page_1)
self.verticalLayout_7.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_7.setObjectName("verticalLayout_7")
#указываем что будет находится на 1 странице
self.label_1 = QtWidgets.QLabel(self.page_1)
font = QtGui.QFont()
font.setPointSize(40)
font.setFamily("Century Gothic")
font.setPointSize(15)
font.setKerning(True)
self.label_1.setFont(font)
self.label_1.setAlignment(QtCore.Qt.AlignCenter)
self.label_1.setObjectName("label_1")
self.verticalLayout_7.addWidget(self.label_1)
self.main = App()
self.main.setMinimumSize(QtCore.QSize(500, 154))
self.main.w_root.setWindowFlag(Qt.FramelessWindowHint)
self.verticalLayout_7.addWidget(self.main.w_root, alignment = QtCore.Qt.AlignRight)
self.main.w_root.setWindowFlag(Qt.CustomizeWindowHint)
self.stackedWidget.addWidget(self.page_1)
#2 страница
self.page_2 = QtWidgets.QWidget()
self.page_2.setObjectName("page_2")
self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.page_2)
self.verticalLayout_6.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_6.setObjectName("verticalLayout_6")
#указываем что будет находиться в 2 странице
self.label_2 = QtWidgets.QLabel("Страница2", self.page_2)
font = QtGui.QFont()
font.setPointSize(40)
font.setFamily("Century Gothic")
font.setPointSize(15)
font.setKerning(True)
self.label_2.setFont(font)
self.label_2.setStyleSheet("color: #FFF; background-color: #1eae98;")
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.verticalLayout_6.addWidget(self.label_2)
self.stackedWidget.addWidget(self.page_2)
#3 страница
self.page_3 = QtWidgets.QWidget()
self.page_3.setObjectName("page_3")
self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.page_3)
self.verticalLayout_8.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_8.setObjectName("verticalLayout_8")
#указываем что будет находиться на 3 странице
self.label = QtWidgets.QLabel("Страница3", self.page_3)
font = QtGui.QFont()
font.setFamily("Century Gothic")
font.setPointSize(15)
font.setKerning(True)
self.label.setFont(font)
self.label.setStyleSheet("color: green; background-color: black;")
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.verticalLayout_8.addWidget(self.label)
self.stackedWidget.addWidget(self.page_3)
# page_4 verticalLayout_9
self.page_4 = QtWidgets.QWidget()
self.page_4.setObjectName('page_4')
self.gg = Main()
self.verticalLayout_9 = QtWidgets.QVBoxLayout(self.page_4)
self.verticalLayout_9.addWidget(self.gg)
self.verticalLayout_9.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_9.setSpacing(0)
self.verticalLayout_9.setObjectName('verticalLayout_9')
self.stackedWidget.addWidget(self.page_4)
self.verticalLayout_5.addWidget(self.stackedWidget)
self.horizontalLayout_2.addWidget(self.frame_pages)
self.stackedWidget.setCurrentIndex(0)
# verticalLayout centralwidget
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setSpacing(0)
# verticalLayout.addWidget(self.Content)
self.verticalLayout.addWidget(self.Content)
#Нажатие на дом
self.btn_page_1.clicked.connect(
lambda: self.stackedWidget.setCurrentWidget(self.page_1))
#Нажатие на заметки
self.btn_page_2.clicked.connect(
lambda: self.stackedWidget.setCurrentWidget(self.page_2))
#Нажатие на погоду
self.btn_page_3.clicked.connect(
lambda: self.stackedWidget.setCurrentWidget(self.page_3))
self.btn_page_4.clicked.connect(
lambda: self.stackedWidget.setCurrentWidget(self.page_4))
self.frame_left_menu.installEventFilter(self)
self.verticalLayout_3.addWidget(self.timewidget, 0, QtCore.Qt.AlignBottom)
# календарь
self.calendarWidget = QtWidgets.QCalendarWidget(self.page_1)
self.calendarWidget.setWindowFlag(Qt.FramelessWindowHint)
self.calendarWidget.setEnabled(True)
self.calendarWidget.setGeometry(QtCore.QRect(0, 154, 800, 381))
self.calendarWidget.setFixedSize(QtCore.QSize(800, 381))
self.calendarWidget.setWindowFlags(Qt.FramelessWindowHint)
font = QtGui.QFont()
font.setFamily("Century Gothic")
font.setPointSize(15)
font.setKerning(False)
self.calendarWidget.setFont(font)
self.calendarWidget.setAutoFillBackground(True)
self.calendarWidget.setGridVisible(False)
self.calendarWidget.setVerticalHeaderFormat(QtWidgets.QCalendarWidget.NoVerticalHeader)
self.calendarWidget.setDateEditEnabled(False)
self.calendarWidget.setDateEditAcceptDelay(0)
self.calendarWidget.setObjectName("calendarWidget")
self.calendarWidget.setStyleSheet(StyleSheet)
self.verticalLayout_7.addWidget(self.calendarWidget)
def showTime(self):
current_time = QtCore.QTime.currentTime()
label_time = current_time.toString('hh:mm')
self.timewidget.setText(label_time)
StyleSheet = '''
/* Верхняя область навигации */
#qt_calendar_navigationbar {
background-color: rgb(0, 188, 212);
min-width: 800px;
max-width: 800px;
min-height: 35px;
max-height: 35px;
}
/* Кнопка последнего месяца и кнопка следующего месяца */
#qt_calendar_prevmonth, #qt_calendar_nextmonth {
border: none; /* убрать границу */
margin-top: 0px;
color: white;
min-width: 30px;
max-width: 30px;
min-height: 30px;
max-height: 30px;
border-radius: 10px; /* выглядит как эллипс */
font-weight: bold; /* шрифт полужирный */
qproperty-icon: none;
background-color: transparent; /* Цвет фона прозрачный */
}
#qt_calendar_prevmonth {
qproperty-text: "<"; /* Изменить текст кнопки */
}
#qt_calendar_nextmonth {
qproperty-text: ">";
}
#qt_calendar_prevmonth:hover, #qt_calendar_nextmonth:hover {
background-color: rgba(225, 225, 225, 100);
}
#qt_calendar_prevmonth:pressed, #qt_calendar_nextmonth:pressed {
background-color: rgba(235, 235, 235, 100);
}
/* год, месяц */
#qt_calendar_yearbutton, #qt_calendar_monthbutton {
color: white;
margin: -1px;
min-width: -1px;
border-radius: 15px;
background-color: rgba(0, 188, 212, 100)
}
#qt_calendar_yearbutton:hover, #qt_calendar_monthbutton:hover {
background-color: rgba(225, 225, 225, 100);
}
#qt_calendar_yearbutton:pressed, #qt_calendar_monthbutton:pressed {
background-color: rgba(235, 235, 235, 100);
}
/* Поле ввода года */
#qt_calendar_yearedit {
min-width: 85px;
color: white;
background: transparent; /* Сделать фон окна ввода прозрачным */
}
#qt_calendar_yearedit::up-button { /* Кнопка вверх */
width: 25px;
subcontrol-position: right;
}
#qt_calendar_yearedit::down-button { /* Кнопка вниз */
width: 25px;
subcontrol-position: left;
}
/* меню выбора месяца */
CalendarWidget_QToolButton_QMenu {
background-color: white;
}
CalendarWidget_QToolButton_QMenu_item {
padding: 10px;
}
CalendarWidget_QToolButton_QMenu_item_selected_enabled {
background-color: rgb(230, 230, 230);
selection-color: rgb(45, 86, 100);
selection-background-color: rgb(205, 217, 226);
}
CalendarWidget_QToolButton_menu-indicator {
subcontrol-position: right center;
}
/* ниже календарной формы */
#qt_calendar_calendarview {
outline: 0px; /* Удалить выделенную пунктирную рамку */
selection-background-color: rgb(0, 188, 212);
}
'''
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
app.setFont(QtGui.QFont("Century Gothic", 12,))
w = MainWindow()
w.show()
sys.exit(app.exec_())
Ответы (1 шт):
Предисловие:
я убрал некоторые импорты, который неизвестны и не влияют на суть вопроса. Это виджет для четвертой страницы и еще что-то.
я переместил виджет календарь, в то место, где он должен находится.
я заменил виджет для загрузки на первую страницу своим, так как ваш виджет не могу воспроизвести.
поменяйте картинки на свои.
По сути заданного вопроса:
как убрать виджет из макета - не надо его туда помещать.
чтобы нарисовать один виджет поверх другого надо для верхнего виджета установить родителя (нижний виджет)
self.main = App()
self.main.setParent(self.page_1)
кнопка, о которой вы пишите, должна быть проверяемой
QPushButton.setCheckable(True)для этой же кнопки вы должны привязать сигнал
clickedк слоту (напримерself.button_clicked), в котором будите менять размеры верхнего виджета, если он не сворачивается у вас.self.designer_button.clicked.connect(self.button_clicked)в слоте
button_clickedвы устанавливаете нужные вам размеры и регулирует размер виджета, чтобы он соответствовал его содержимому.
def button_clicked(self):
#print(f'{self.designer_button.isChecked()}')
if self.designer_button.isChecked():
self.setMaximumSize(QtCore.QSize(345, 535))
self.setMinimumSize(QtCore.QSize(345, 535))
self.label_image.show()
else:
self.setMaximumSize(QtCore.QSize(345, 165))
self.setMinimumSize(QtCore.QSize(345, 165))
self.label_image.hide()
self.adjustSize() # !!! ВАЖНО
q1302442.py
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
# ? from ext import *
#from main import App # +++
from q1302442_second import App # ---
# ? from part_1 import Main
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
#размер основного окн
self.resize(845, 535)
self.setFixedSize(QtCore.QSize(845,535))
self.setStyleSheet("background-color: rgb(245, 45, 45);")
#центральный виджет
self.centralwidget = QtWidgets.QWidget()
self.centralwidget.setObjectName("centralwidget")
self.setCentralWidget(self.centralwidget)
# Content horizontalLayout_2
self.Content = QtWidgets.QFrame(self.centralwidget)
self.Content.setStyleSheet("background-color: rgb(255, 255, 255);")
self.Content.setFrameShape(QtWidgets.QFrame.NoFrame)
self.Content.setFrameShadow(QtWidgets.QFrame.Raised)
self.Content.setObjectName("Content")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.Content)
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_2.setSpacing(0)
#виджет слева
self.frame_left_menu = QtWidgets.QFrame(self.Content)
self.frame_left_menu.setMinimumSize(QtCore.QSize(45, 0))
self.frame_left_menu.setStyleSheet("background-color: rgb(255, 255, 255); border: 0px solid; ")
self.frame_left_menu.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_left_menu.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_left_menu.setObjectName("frame_left_menu")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.frame_left_menu)
self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
self.frame_top_menus = QtWidgets.QFrame(self.frame_left_menu)
self.frame_top_menus.setFrameShape(QtWidgets.QFrame.NoFrame)
self.frame_top_menus.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_top_menus.setObjectName("frame_top_menus")
#указываем вертикальное выравнивание
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.frame_top_menus)
self.verticalLayout_4.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_4.setSpacing(10)
#домик
self.btn_page_1 = QtWidgets.QPushButton("", self.frame_top_menus)
self.btn_page_1.setIcon(QIcon('Ok.png'))
self.btn_page_1.setIconSize(QSize(45,45))
self.btn_page_1.setMinimumSize(QtCore.QSize(0, 40))
self.btn_page_1.setStyleSheet('border: 0px solid red;')
self.btn_page_1.setObjectName("btn_page_1")
self.verticalLayout_4.addWidget(self.btn_page_1)
#Заметки
self.btn_page_2 = QtWidgets.QPushButton("", self.frame_top_menus)
self.btn_page_2.setIcon(QIcon('im.png'))
self.btn_page_2.setIconSize(QSize(45,45))
self.btn_page_2.setMinimumSize(QtCore.QSize(0, 40))
self.btn_page_2.setStyleSheet('border: 0px solid red;')
self.btn_page_2.setObjectName("btn_page_2")
self.verticalLayout_4.addWidget(self.btn_page_2)
#погода
self.btn_page_3 = QtWidgets.QPushButton("", self.frame_top_menus)
self.btn_page_3.setIcon(QIcon('ball.png'))
self.btn_page_3.setIconSize(QSize(45,45))
self.btn_page_3.setMinimumSize(QtCore.QSize(0, 40))
self.btn_page_4 = QtWidgets.QPushButton('', self.frame_top_menus)
self.btn_page_4.setIcon(QIcon('lena-2.png'))
self.btn_page_4.setIconSize(QSize(45, 45))
self.btn_page_4.setMinimumSize(QtCore.QSize(0, 40))
timer = QTimer(self)
timer.timeout.connect(self.showTime)
timer.start(1000)
font1 = QFont('Century Gothic', 13, QFont.Bold)
self.timewidget = QtWidgets.QLabel()
self.timewidget.setMinimumSize(QtCore.QSize(45,45))
self.timewidget.setAlignment(Qt.AlignBottom)
self.timewidget.setFont(font1)
self.btn_page_3.setObjectName("btn_page_3")
self.verticalLayout_4.addWidget(self.btn_page_3)
self.verticalLayout_3.addWidget(self.frame_top_menus, 0, QtCore.Qt.AlignTop)
self.horizontalLayout_2.addWidget(self.frame_left_menu)
self.verticalLayout_4.addWidget(self.btn_page_4)
self.frame_pages = QtWidgets.QFrame(self.Content)
self.frame_pages.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_pages.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_pages.setObjectName("frame_pages")
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.frame_pages)
self.verticalLayout_5.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.stackedWidget = QtWidgets.QStackedWidget(self.frame_pages)
self.stackedWidget.setMinimumSize(QtCore.QSize(800, 535))
self.stackedWidget.setObjectName("stackedWidget")
# 1 страница
self.page_1 = QtWidgets.QWidget()
self.page_1.setObjectName("page_1")
self.verticalLayout_7 = QtWidgets.QVBoxLayout(self.page_1)
self.verticalLayout_7.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_7.setObjectName("verticalLayout_7")
#указываем что будет находится на 1 странице
self.label_1 = QtWidgets.QLabel(self.page_1)
font = QtGui.QFont()
font.setPointSize(40)
font.setFamily("Century Gothic")
font.setPointSize(15)
font.setKerning(True)
self.label_1.setFont(font)
# +++
self.label_1.setMinimumHeight(160) # +++
self.label_1.setAlignment(QtCore.Qt.AlignCenter)
self.label_1.setObjectName("label_1")
self.verticalLayout_7.addWidget(self.label_1)
# +++ календарь должен быть здесь
# календарь
self.calendarWidget = QtWidgets.QCalendarWidget(self.page_1)
self.calendarWidget.setWindowFlag(Qt.FramelessWindowHint)
self.calendarWidget.setEnabled(True)
self.calendarWidget.setGeometry(QtCore.QRect(0, 154, 800, 381))
self.calendarWidget.setFixedSize(QtCore.QSize(800, 381))
self.calendarWidget.setWindowFlags(Qt.FramelessWindowHint)
font = QtGui.QFont()
font.setFamily("Century Gothic")
font.setPointSize(15)
font.setKerning(False)
self.calendarWidget.setFont(font)
self.calendarWidget.setAutoFillBackground(True)
self.calendarWidget.setGridVisible(False)
self.calendarWidget.setVerticalHeaderFormat(QtWidgets.QCalendarWidget.NoVerticalHeader)
self.calendarWidget.setDateEditEnabled(False)
self.calendarWidget.setDateEditAcceptDelay(0)
self.calendarWidget.setObjectName("calendarWidget")
self.calendarWidget.setStyleSheet(StyleSheet)
self.verticalLayout_7.addWidget(self.calendarWidget)
# +++
self.main = App()
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
self.main.setParent(self.page_1) # Устанавливает родительский элемент виджета
self.main.setMaximumSize(QtCore.QSize(345, 165))
self.main.move(455, 0) # Это соответствует перемещению (QPoint(x, y)).
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# self.main.setMinimumSize(QtCore.QSize(500, 154))
# self.main.w_root.setWindowFlag(Qt.FramelessWindowHint)
# self.verticalLayout_7.addWidget(self.main.w_root, alignment = QtCore.Qt.AlignRight)
# self.main.w_root.setWindowFlag(Qt.CustomizeWindowHint)
# self.main.setMinimumSize(QtCore.QSize(500, 154))
# self.verticalLayout_7.addWidget(self.main, alignment = QtCore.Qt.AlignRight)
self.stackedWidget.addWidget(self.page_1)
#2 страница
self.page_2 = QtWidgets.QWidget()
self.page_2.setObjectName("page_2")
self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.page_2)
self.verticalLayout_6.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_6.setObjectName("verticalLayout_6")
#указываем что будет находиться в 2 странице
self.label_2 = QtWidgets.QLabel("Страница2", self.page_2)
font = QtGui.QFont()
font.setPointSize(40)
font.setFamily("Century Gothic")
font.setPointSize(15)
font.setKerning(True)
self.label_2.setFont(font)
self.label_2.setStyleSheet("color: #FFF; background-color: #1eae98;")
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.verticalLayout_6.addWidget(self.label_2)
self.stackedWidget.addWidget(self.page_2)
#3 страница
self.page_3 = QtWidgets.QWidget()
self.page_3.setObjectName("page_3")
self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.page_3)
self.verticalLayout_8.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_8.setObjectName("verticalLayout_8")
#указываем что будет находиться на 3 странице
self.label = QtWidgets.QLabel("Страница3", self.page_3)
font = QtGui.QFont()
font.setFamily("Century Gothic")
font.setPointSize(15)
font.setKerning(True)
self.label.setFont(font)
self.label.setStyleSheet("color: green; background-color: black;")
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.verticalLayout_8.addWidget(self.label)
self.stackedWidget.addWidget(self.page_3)
# page_4 verticalLayout_9
self.page_4 = QtWidgets.QWidget()
self.page_4.setObjectName('page_4')
# self.gg = Main() # раскомментируйте
self.verticalLayout_9 = QtWidgets.QVBoxLayout(self.page_4)
# self.verticalLayout_9.addWidget(self.gg) # раскомментируйте
self.verticalLayout_9.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_9.setSpacing(0)
self.verticalLayout_9.setObjectName('verticalLayout_9')
self.stackedWidget.addWidget(self.page_4)
self.verticalLayout_5.addWidget(self.stackedWidget)
self.horizontalLayout_2.addWidget(self.frame_pages)
self.stackedWidget.setCurrentIndex(0)
# verticalLayout centralwidget
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setSpacing(0)
# verticalLayout.addWidget(self.Content)
self.verticalLayout.addWidget(self.Content)
#Нажатие на дом
self.btn_page_1.clicked.connect(
lambda: self.stackedWidget.setCurrentWidget(self.page_1))
#Нажатие на заметки
self.btn_page_2.clicked.connect(
lambda: self.stackedWidget.setCurrentWidget(self.page_2))
#Нажатие на погоду
self.btn_page_3.clicked.connect(
lambda: self.stackedWidget.setCurrentWidget(self.page_3))
self.btn_page_4.clicked.connect(
lambda: self.stackedWidget.setCurrentWidget(self.page_4))
self.frame_left_menu.installEventFilter(self)
self.verticalLayout_3.addWidget(self.timewidget, 0, QtCore.Qt.AlignBottom)
def showTime(self):
current_time = QtCore.QTime.currentTime()
label_time = current_time.toString('hh:mm')
self.timewidget.setText(label_time)
StyleSheet = '''
/* Верхняя область навигации */
#qt_calendar_navigationbar {
background-color: rgb(0, 188, 212);
min-width: 800px;
max-width: 800px;
min-height: 35px;
max-height: 35px;
}
/* Кнопка последнего месяца и кнопка следующего месяца */
#qt_calendar_prevmonth, #qt_calendar_nextmonth {
border: none; /* убрать границу */
margin-top: 0px;
color: white;
min-width: 30px;
max-width: 30px;
min-height: 30px;
max-height: 30px;
border-radius: 10px; /* выглядит как эллипс */
font-weight: bold; /* шрифт полужирный */
qproperty-icon: none;
background-color: transparent; /* Цвет фона прозрачный */
}
#qt_calendar_prevmonth {
qproperty-text: "<"; /* Изменить текст кнопки */
}
#qt_calendar_nextmonth {
qproperty-text: ">";
}
#qt_calendar_prevmonth:hover, #qt_calendar_nextmonth:hover {
background-color: rgba(225, 225, 225, 100);
}
#qt_calendar_prevmonth:pressed, #qt_calendar_nextmonth:pressed {
background-color: rgba(235, 235, 235, 100);
}
/* год, месяц */
#qt_calendar_yearbutton, #qt_calendar_monthbutton {
color: white;
margin: -1px;
min-width: -1px;
border-radius: 15px;
background-color: rgba(0, 188, 212, 100)
}
#qt_calendar_yearbutton:hover, #qt_calendar_monthbutton:hover {
background-color: rgba(225, 225, 225, 100);
}
#qt_calendar_yearbutton:pressed, #qt_calendar_monthbutton:pressed {
background-color: rgba(235, 235, 235, 100);
}
/* Поле ввода года */
#qt_calendar_yearedit {
min-width: 85px;
color: white;
background: transparent; /* Сделать фон окна ввода прозрачным */
}
#qt_calendar_yearedit::up-button { /* Кнопка вверх */
width: 25px;
subcontrol-position: right;
}
#qt_calendar_yearedit::down-button { /* Кнопка вниз */
width: 25px;
subcontrol-position: left;
}
/* меню выбора месяца */
CalendarWidget_QToolButton_QMenu {
background-color: white;
}
CalendarWidget_QToolButton_QMenu_item {
padding: 10px;
}
CalendarWidget_QToolButton_QMenu_item_selected_enabled {
background-color: rgb(230, 230, 230);
selection-color: rgb(45, 86, 100);
selection-background-color: rgb(205, 217, 226);
}
CalendarWidget_QToolButton_menu-indicator {
subcontrol-position: right center;
}
/* ниже календарной формы */
#qt_calendar_calendarview {
outline: 0px; /* Удалить выделенную пунктирную рамку */
selection-background-color: rgb(0, 188, 212);
}
'''
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
app.setFont(QtGui.QFont("Century Gothic", 12,))
w = MainWindow()
w.show()
sys.exit(app.exec_())
q1302442_second.py
import sys
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtCore import QPropertyAnimation, pyqtProperty
from PyQt5.QtWidgets import QGraphicsDropShadowEffect, QApplication, QMainWindow
class AnimationShadowEffect(QGraphicsDropShadowEffect):
def __init__(self, color, *args, **kwargs):
super(AnimationShadowEffect, self).__init__(*args, **kwargs)
self.setColor(color)
self.setOffset(0, 0)
self.setBlurRadius(0)
self._radius = 0
self.animation = QPropertyAnimation(self)
self.animation.setTargetObject(self)
self.animation.setDuration(2000)
self.animation.setLoopCount(-1)
self.animation.setPropertyName(b'radius')
self.animation.setKeyValueAt(0, 1)
self.animation.setKeyValueAt(0.5, 30)
self.animation.setKeyValueAt(1, 1)
def start(self):
self.animation.start()
def stop(self, r=0):
self.animation.stop()
self.radius = r
@pyqtProperty(int)
def radius(self):
return self._radius
@radius.setter
def radius(self, r):
self._radius = r
self.setBlurRadius(r)
class PushButton(QtWidgets.QPushButton):
hover = QtCore.pyqtSignal(str)
def __init__(self, parent=None):
super(PushButton, self).__init__(parent)
self.setText("Button")
self.setFixedSize(200, 70)
self.setCheckable(True)
def enterEvent(self, event):
self.hover.emit("enterEvent")
def leaveEvent(self, event):
self.hover.emit("leaveEvent")
class App(QMainWindow):
def __init__(self):
super(App, self).__init__()
self.resize(357, 205)
self.setStyleSheet("background-color: rgb(41, 41, 62);")
self.centralwidget = QtWidgets.QWidget(self)
self.setCentralWidget(self.centralwidget)
self.label_image = QtWidgets.QLabel()
self.pixmap = QtGui.QPixmap('Ok.png')
self.label_image.setPixmap(self.pixmap)
self.label_image.hide()
self.designer_button = PushButton(self.centralwidget)
self.designer_button.setStyleSheet("""
QPushButton {
background-color: rgb(28, 28, 42);
border: 1px solid rgb(202, 202, 202);
border-radius: 15px;
color: rgb(202, 202, 202);
font-family: Calibre, Helvetica Neue, Segoe UI, Helvetica, Arial, Lucida Grande sans-serif;
font-size: 16px;
font-weight: 500;
}
QPushButton:hover {
background-color: rgb(16, 16, 24);
color: rgb(76, 76, 76);
}
QPushButton:pressed {
background-color: rgb(6, 6, 8);
color: rgb(41, 41, 62);
}
""")
self.layout = QtWidgets.QGridLayout(self.centralwidget)
self.layout.addWidget(
self.label_image, 0, 1, alignment=QtCore.Qt.AlignCenter)
self.layout.addWidget(
self.designer_button, 1, 1,
alignment=QtCore.Qt.AlignHCenter |QtCore.Qt.AlignBottom)
self.aniButton = AnimationShadowEffect(QtCore.Qt.white, self.designer_button)
self.designer_button.hover.connect(self.button_hover)
self.designer_button.clicked.connect(self.button_clicked)
self.designer_button.setGraphicsEffect(self.aniButton)
def button_hover(self, hover):
if hover == "enterEvent":
self.aniButton.start()
elif hover == "leaveEvent":
self.aniButton.stop()
def button_clicked(self):
#print(f'{self.designer_button.isChecked()}')
if self.designer_button.isChecked():
self.setMaximumSize(QtCore.QSize(345, 535))
self.setMinimumSize(QtCore.QSize(345, 535))
self.label_image.show()
else:
self.setMaximumSize(QtCore.QSize(345, 165))
self.setMinimumSize(QtCore.QSize(345, 165))
self.label_image.hide()
self.adjustSize() # !!! ВАЖНО
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
ex.show()
sys.exit(app.exec_())




