Виджет при выдвижении уходит под другой виджет

У меня есть небольшое приложение, в котором на 1-ой странице находятся сразу 2 виджета.

Первый виджет - календарь, второй виджет - виджет с погодой, который при нажатии на кнопку выдвигается и показывает погоду на всю неделю.

Однако при нажатии на кнопку виджет с погодой выдвигается под календарем.

Я пытался сам разобраться с этой проблемой, однако не вышло и я не знаю как правильно это сделать, помогите пожалуйста

До нажатия на кнопкувведите сюда описание изображения

После нажатия на кнопкувведите сюда описание изображения

Вот сам код:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets

from PyQt5.Qt import *

from main import App                              # +++ 


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.verticalLayout_9 = QtWidgets.QVBoxLayout(self.page_4)               

        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_())

Вот код с погодой, который импортируется в основной код:

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5 import uic, QtCore, QtTest, QtWidgets
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import QThread
import weather
import time
import datetime
from weather import DAYS 

#два класса с числами Фобаначе , для правного визуала 
H_show = [
    155,156,157,158,
    160,168,181,202,
    236,291,380,400,
    440,500,535,
]
H_hide = [
    155,156,157,158,
    160,168,181,202,
    236,291,380,400,
    440,500,535,
]

class WeatherData(QThread):
    req = weather.today()
    temp = req['temp']
    feels = req['feels']
    pres = req['pressure']
    speed = str(req['wind']['speed'])
    city = req['city']
    type = req['dis']


    week = weather.week()



    def __init__(self):
        QThread.__init__(self)


    def run(self):
        while True:
            try:
                req = weather.today()
            except:
                req['temp'] = self.temp
                req['feels'] = self.feels
                req['pressure'] = self.pres
                req['wind']['speed'] = self.pres
                req['city'] = self.city
                req['dis'] = self.type

            try:
                req_week = weather.week()
                self.week = req_week
            except:
                self.week = DAYS

            self.temp = req['temp']
            self.feels = req['feels']
            self.pres = req['pressure']
            self.speed = str(req['wind']['speed'])
            self.city = req['city']
            self.type = req['dis']
            time.sleep(600)






class App(QWidget):
    #
    #
    #
    #
    #
    #
    #
    show_more = True 

    def __init__(self):
        super().__init__()
        self.weather = WeatherData()
        self.weather.start()
        
        self.set()
        self.setData()
        self.setMore()



    def set(self):
        self.w_root = uic.loadUi('root.ui')
        self.w_root.installEventFilter(self)
        self.w_root.btn_more.clicked.connect(self.setHeight)
        
#
#
#
#
#
#
# перемещение кнопки с ресайзом
    def eventFilter(self, object, event):
        self.w_root.resize(444, self.w_root.height())
        self.w_root.btn_more.move(0, self.w_root.height()-26)
        self.w_root.l_day.move(8, self.w_root.height()-18)
        QtWidgets.QApplication.processEvents()
        return False
#
#
#
#
#
#
#
#

#устанавливаем значение на сегодня
    def setData(self):
        # данные погоды
        self.w_root.l_temp.setText(str(self.weather.temp) + '°C')
        self.w_root.l_fell.setText(self.weather.feels)
        self.w_root.l_pres.setText(self.weather.pres)
        self.w_root.l_wind.setText(self.weather.speed + 'м/с')
        self.w_root.l_city.setText(self.weather.city)
        self.w_root.l_type.setText(self.weather.type)

        #иконка погоды
        px_logo = QPixmap(f'C:/python/pogoda/{self.weather.type}.png')
        self.w_root.l_logo.setPixmap(px_logo)

        #день недели
        today = DAYS[datetime.datetime.today().weekday()]
        self.w_root.l_day.setText(today['title'])
        color = today['color']
        self.w_root.l_day.setStyleSheet(f'color:{color}')



#
#
#
#
#

    def setHeight(self):
        if self.w_root.height() >= 200:
            self.show_more = False
        if self.show_more:
            for i in H_hide:
                if self.w_root.height() > i:
                    continue
                self.w_root.resize(444, i)
                self.w_root.btn_more.move(0, i-26)
                self.w_root.l_day.move(8,i-18)
                
                QtWidgets.QApplication.processEvents()
                time.sleep(.02)
            self.show_more = False
        else:
            for i in reversed(H_show):
                self.w_root.resize(444, i)
                self.w_root.btn_more.move(0, i-26)
                self.w_root.l_day.move(8,i-18)
                QtWidgets.QApplication.processEvents()
                time.sleep(.02)
            self.show_more = True
        App.show_more = self.show_more
#
#
#
#
#
#
#



    def setMore(self):
        for i in self.weather.week:
            w_day = uic.loadUi('day.ui')
            w_day.setObjectName('w_day_' + str(i['num']))
            w_day.l_title.setText(i['title'])
            w_day.l_temp.setText(str(round(i['temp'])) + '°C')
            w_day.l_type.setText(i['type'])
            w_day.l_title.setStyleSheet('color: ' + i['color'] + '; background-color: none; border: none')
            if i['active']:
                w_day.setStyleSheet('border: 1px solid' + i['color'])
            else:
                w_day.setStyleSheet('border: none')
            self.w_root.box.addWidget(w_day)
        self.w_root.box.addStretch()







if __name__ == '__main__':
    app = QtWidgets.QApplication([])

    ex = App()
    ex.show
    sys.exit(app.exec_())

Ответы (1 шт):

Автор решения: S. Nick

На 1-ой странице находятся не два, а три виджета. label_1 - если вам не нужен, уберите.

Вы пишите: "при нажатии на кнопку выдвигается и показывает погоду...". О какой кнопке вы говорите ?

Как правильно это сделать?

Проблема в том, что вы злоупотребляете такими свойствами как: setFixedSize, setMinimumSize, min-width: 800px; max-width: 800px;. Вы можете их использовать, но вы должны понимать зачем вы это делаете. Если такого понимания нет - не используйте их.

Менеджеры компоновки (layout) для того и существуют, чтобы правильно разместить виджеты в окне. Но вы мешаете им это сделать вышеперечисленными свойствами.

Ваш виджет, который показывает погоду, имеет такую форму,
что просто просится разместить его не QVBoxLayout, а в QHBoxLayout.

Внесите некоторые изменения, рекомендованные в тексте кода и попробуйте изменять размер вашего окна.

Обратите внимание что я убрал min-width: 800px; max-width: 800px; в вашем StyleSheet, они не нужны !!!


import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *

#from main import App                                        # !!! установите свой импорт
from pyowm_OWM import ExampleApp                             # <--- уберите
#    ^^^^^^^^^                   <--- взято из ответа на ваш предыдущий вопрос

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)
        
        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('lena.jpg'))
        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('im.png'))
        self.btn_page_3.setIconSize(QSize(45,45))
        self.btn_page_3.setMinimumSize(QtCore.QSize(0, 40))
        self.btn_page_3.setObjectName("btn_page_3")
        self.verticalLayout_4.addWidget(self.btn_page_3)
        
        self.btn_page_4 = QtWidgets.QPushButton('', self.frame_top_menus)
        self.btn_page_4.setIcon(QIcon('ball.png'))                          
        self.btn_page_4.setIconSize(QSize(45, 45))
        self.btn_page_4.setMinimumSize(QtCore.QSize(0, 40))
        self.verticalLayout_4.addWidget(self.btn_page_4)                      
        
        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.verticalLayout_3.addWidget(self.frame_top_menus, 0, QtCore.Qt.AlignTop)
        self.horizontalLayout_2.addWidget(self.frame_left_menu)

        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.setObjectName("stackedWidget")
## ?        self.stackedWidget.setMinimumSize(QtCore.QSize(800, 535))     # --- зачем ?
       
        # 1 страница
        self.page_1 = QtWidgets.QWidget()
        self.page_1.setObjectName("page_1")

# !!! заменяем vvvvvvvvvvvvvvvv             vvvvvvvvvvv                   # <----
#1        self.verticalLayout_7 = QtWidgets.QVBoxLayout(self.page_1)
# !!! на     vvvvvvvvvv             vvvvvvvvvvv                           # <---- Во всех местах 
        self.h_layout_7 = QtWidgets.QHBoxLayout(self.page_1)
        self.h_layout_7.setContentsMargins(0, 0, 0, 0)
        self.h_layout_7.setObjectName("h_layout_7")
        
# !!!   убираем label_1
        '''
        self.label_1 = QtWidgets.QLabel('Hello World', self.page_1)
        font = QtGui.QFont()
        font.setPointSize(40)
        font.setFamily("Century Gothic")
        font.setPointSize(75)          
        font.setKerning(True)
        self.label_1.setFont(font)
        self.label_1.setAlignment(QtCore.Qt.AlignCenter)
        self.label_1.setObjectName("label_1")
        self.h_layout_7.addWidget(self.label_1)
        '''

# !!!  установите свое, две строки ниже 
        '''
        self.main = App()                                          # установите свое 1
        self.h_layout_7.addWidget(self.main.w_root, 3)             # установите свое 2, 
# !!!                                             ^ ^              # + , 3
        
## ?        self.main.setMinimumSize(QtCore.QSize(500, 154))           # --- зачем ???
## ?        self.main.w_root.setWindowFlag(Qt.FramelessWindowHint)     # ???
## ?        self.main.w_root.setWindowFlag(Qt.CustomizeWindowHint)     # ???
        '''

# !!!  уберите, две строки ниже         
        self.main = ExampleApp()                                       # <---- 1 
        self.h_layout_7.addWidget(self.main, 3)                        # <---- 2        
        
        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)

        self.page_4 = QtWidgets.QWidget()
        self.page_4.setObjectName('page_4')
        self.verticalLayout_9 = QtWidgets.QVBoxLayout(self.page_4)               
        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.h_layout_7.addWidget(self.calendarWidget, 2)                     # + 2

    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);
}

/* Поле ввода года        min-width: 85px;                                                */
#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_())

введите сюда описание изображения

→ Ссылка