Работа со стилем в приложение

Есть 2 окна: 1-ое окно оно главное, 2-ое это выводится пользовательские настройки. Так вот как сделать чтобы стиль не применялся во втором окне, а только был на первом? Буду очень благодарен!

код: main.py

from PyQt5 import QtCore
from PyQt5 import QtGui
from PyQt5 import QtWidgets
from options import Themes
import sys
import os


class MainWindow(QtWidgets.QMainWindow):
    
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self);

        # создание файла для сохранения натроек
        self.CONFIG_FILE_NAME = 'settings\\config.ini'

        self.centralWidget = QtWidgets.QWidget() # создаём центральный виджет
        self.setCentralWidget(self.centralWidget)
        self.mainLayout = QtWidgets.QVBoxLayout(self.centralWidget)
        
        # settings
        self.setFixedSize(620, 640)
        self.setWindowTitle(" B U G ")

        # делаем сборку
        self.widget_main = self.createPage()
        self.mainLayout.addWidget(self.widget_main)
        self.createMenuBar()

        # условия для тем (чтобы задать стиль обьектов)
        if self.view_theme_1.isChecked() == True:
            Themes.set_theme_number_1(self)

        elif self.view_theme_2.isChecked() == True:
            Themes.set_theme_number_2(self)

        # вывод информации на строку состояния
        self.label_1 = QtWidgets.QLabel("v 1.0")
        self.label_1.setStyleSheet("font-size: 18px; color: black;")

        self.status_1.addPermanentWidget(self.label_1)

        self.status_1.showMessage("Добро пожаловать", msecs = 4000)
        
        self.setStatusBar(self.status_1)

        
    def createPage(self):
        """создание страницы в основном окне """

        self.widget_page = QtWidgets.QWidget()

        # создание обьектов
        self.button_1 = QtWidgets.QPushButton("Перейти к поиску телефонных\
                                            \nномеров и электронных почт")
        
        self.formbox = QtWidgets.QGridLayout()

        # добавление в box и в окно
        self.formbox.addWidget(self.button_1)
        self.formbox.setSpacing(20)
        self.widget_page.setLayout(self.formbox)

        # сделать главным комонентом
        return self.widget_page


    def createMenuBar(self):

        # создание панели-меню и строки состоянии
        self.menu = QtWidgets.QMenuBar()
        self.status_1 = QtWidgets.QStatusBar()

        # создание категорий меню и функционал в ней
        self.menu_options = QtWidgets.QMenu("Опции")
        self.menu_view = QtWidgets.QMenu('Вид')
        self.menu_help = QtWidgets.QMenu("Справка")

        # просто настройки
        self.sub_menu_options = QtWidgets.QMenu("Настройки")

        self.user_settings = QtWidgets.QAction("Пользовательские настройки")

        self.sub_menu_options.addAction(self.user_settings)

        self.menu_options.addMenu(self.sub_menu_options)

        # настройка тем
        self.sub_menu_view_themes = QtWidgets.QMenu("Цветовая схема")

        self.view_theme_1 = QtWidgets.QAction("Тёмно-синяя тема")
        self.view_theme_1.setCheckable(True)
        self.view_theme_2 = QtWidgets.QAction("Светло-серая тема")
        self.view_theme_2.setCheckable(True)
        self.view_theme_2.setChecked(True)

        self.group_action_5 = QtWidgets.QActionGroup(self.sub_menu_view_themes)

        self.group_action_5.addAction(self.view_theme_1)
        self.group_action_5.addAction(self.view_theme_2)
    
        self.sub_menu_view_themes.addAction(self.view_theme_1)
        self.sub_menu_view_themes.addAction(self.view_theme_2)
        
        self.menu_view.addMenu(self.sub_menu_view_themes)

        # добавляем отдельное меню в главное меню
        self.menu.addMenu(self.menu_options)
        self.menu.addMenu(self.menu_view)
        self.menu.addMenu(self.menu_help)

        # датчики
        self.user_settings.triggered.connect(self.clickedActionUser)
        self.view_theme_1.triggered.connect(self.clickedActionViewTheme)
        self.view_theme_2.triggered.connect(self.clickedActionViewTheme)

        # добавляем в окно
        self.setMenuBar(self.menu)


    # методы для датчиков
    def clickedActionViewTheme(self):
        if self.view_theme_1.isChecked() == True:
            Themes.set_theme_number_1(self)

        elif self.view_theme_2.isChecked() == True:
            Themes.set_theme_number_2(self)


    def clickedActionUser(self):
        My_WindowSettings = WindowSettings(self)
        My_WindowSettings.show()



class WindowSettings(QtWidgets.QWidget):
    """Класс реализующий пользовательские настройки
       в виде выводящего окна """

    def __init__(self, parent = None):
        QtWidgets.QWidget.__init__(self, parent)
        self.parent = parent

        # settings
        self.setFixedSize(500, 550)
        self.setWindowTitle("Пользовательские настройки")
        self.setWindowFlags(QtCore.Qt.Dialog)
        self.setWindowModality(QtCore.Qt.WindowModal)

        # делаем сборку
        self.createPage()


    def createPage(self):

        self.gridBox = QtWidgets.QGridLayout()

        self.tabWidget = QtWidgets.QTabWidget()
        self.button_save = QtWidgets.QPushButton("Применить")

        self.gridBox.addWidget(self.tabWidget, 0, 0)
        self.gridBox.addWidget(self.button_save, 1, 0, alignment = QtCore.Qt.AlignRight)
        self.setLayout(self.gridBox)

        # сборка tab-виджетов
        self.createTabWidget_Search()


    def createTabWidget_Search(self):
        self.tabWidget_1 = QtWidgets.QWidget()
        self.tabWidget.addTab(self.tabWidget_1, "настройки поиска")


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = MainWindow() 
    MainWindow.show()
    sys.exit(app.exec_())

стили: options.py

from PyQt5 import QtWidgets
from PyQt5 import QtGui


class Themes():

    def set_theme_number_1(self):

        self.setStyleSheet("QPushButton {background: #29293d; color: white; font-size: 18px;}\
                            QPushButton:hover {background: #3d3d5c;}\
                            QPushButton:pressed {background: #1f1f2e}\
                            \
                            QMenuBar {background: #a9a9c2;}\
                            \
                            QLabel {color: white; font-size: 20px;}\
                            QTextEdit {background: #b3b3cc; font-size: 20px; border: 0px solid black;}\
                            QLineEdit {background: #b3b3cc; font-size: 23px; border: 0px solid black;}\
                            QStatusBar {background: #a9a9c2; font-size: 17px; font-style: oblique;}\
                            QComboBox {background: #a9a9c2; font-size: 16px;}\
                            QToolBar {background: #a9a9c2;}\
                            \
                            QToolButton {font-style: italic;}\
                            QToolButton:hover {background: #7575a3;}\
                            QToolButton:pressed {background: #5c5c8a;}\
                            \
                            QTabWidget {background: #29293d;}\
                            "
                            )

        self.palet = QtGui.QPalette()
        self.palet.setColor(QtGui.QPalette.Window, QtGui.QColor("#34344c"))
        self.setPalette(self.palet)

    def set_theme_number_2(self):

        self.setStyleSheet("QPushButton {background: #666666; color: white; font-size: 18px;}\
                            QPushButton:hover {background: #a6a6a6;}\
                            QPushButton:pressed {background: #333333;}\
                            \
                            QLabel {color: white; font-size: 20px;}\
                            QTextEdit {background: #d9d9d9; font-size: 20px; border: 0px solid black;}\
                            QLineEdit {background: #d9d9d9; font-size: 23px; border: 0px solid black;}\
                            QStatusBar {background: #bfbfbf; font-size: 17px; font-style: oblique;}\
                            QComboBox {background: #bfbfbf; font-size: 16px;}\
                            QToolBar {background: #bfbfbf;}\
                            \
                            QToolButton {font-style: italic;}\
                            QToolButton:hover {background: #a6a6a6;}\
                            QToolButton:pressed {background: #737373;}\
                            "
                            )

        self.palet = QtGui.QPalette()
        self.palet.setColor(QtGui.QPalette.Window, QtGui.QColor("#8c8c8c"))
        self.setPalette(self.palet)

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


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

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

не надо передавать родителя:

    def clickedActionUser(self):
#        My_WindowSettings = WindowSettings(self)                           # - self 
#        My_WindowSettings.show()
        self.My_WindowSettings = WindowSettings()                           # +++  <<<======<
        self.My_WindowSettings.show()

import sys
import os
from PyQt5 import QtCore
from PyQt5 import QtGui
from PyQt5 import QtWidgets

#from options import Themes
class Themes():

    def set_theme_number_1(self, parent):                                          # + parent
#       vvvvvv
        parent.setStyleSheet("QPushButton {background: #29293d; color: white; font-size: 18px;}\
                            QPushButton:hover {background: #3d3d5c;}\
                            QPushButton:pressed {background: #1f1f2e}\
                            \
                            QMenuBar {background: #a9a9c2;}\
                            \
                            QLabel {color: white; font-size: 20px;}\
                            QTextEdit {background: #b3b3cc; font-size: 20px; border: 0px solid black;}\
                            QLineEdit {background: #b3b3cc; font-size: 23px; border: 0px solid black;}\
                            QStatusBar {background: #a9a9c2; font-size: 17px; font-style: oblique;}\
                            QComboBox {background: #a9a9c2; font-size: 16px;}\
                            QToolBar {background: #a9a9c2;}\
                            \
                            QToolButton {font-style: italic;}\
                            QToolButton:hover {background: #7575a3;}\
                            QToolButton:pressed {background: #5c5c8a;}\
                            \
                            QTabWidget {background: #29293d;}\
                            "
                            )

        parent.palet = QtGui.QPalette()
        parent.palet.setColor(QtGui.QPalette.Window, QtGui.QColor("#34344c"))
        parent.setPalette(parent.palet)

    def set_theme_number_2(self, parent):                                          # + parent
#       vvvvvv
        parent.setStyleSheet("QPushButton {background: #666666; color: white; font-size: 18px;}\
                            QPushButton:hover {background: #a6a6a6;}\
                            QPushButton:pressed {background: #333333;}\
                            \
                            QLabel {color: white; font-size: 20px;}\
                            QTextEdit {background: #d9d9d9; font-size: 20px; border: 0px solid black;}\
                            QLineEdit {background: #d9d9d9; font-size: 23px; border: 0px solid black;}\
                            QStatusBar {background: #bfbfbf; font-size: 17px; font-style: oblique;}\
                            QComboBox {background: #bfbfbf; font-size: 16px;}\
                            QToolBar {background: #bfbfbf;}\
                            \
                            QToolButton {font-style: italic;}\
                            QToolButton:hover {background: #a6a6a6;}\
                            QToolButton:pressed {background: #737373;}\
                            "
                            )

        parent.palet = QtGui.QPalette()
        parent.palet.setColor(QtGui.QPalette.Window, QtGui.QColor("#8c8c8c"))
        parent.setPalette(parent.palet)


class MainWindow(QtWidgets.QMainWindow):
    
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self);

        # создание файла для сохранения натроек
        self.CONFIG_FILE_NAME = 'settings\\config.ini'

        self.centralWidget = QtWidgets.QWidget() # создаём центральный виджет
        self.setCentralWidget(self.centralWidget)
        self.mainLayout = QtWidgets.QVBoxLayout(self.centralWidget)
        
        # settings
        self.setFixedSize(620, 640)
        self.setWindowTitle(" B U G ")

        # делаем сборку
        self.widget_main = self.createPage()
        self.mainLayout.addWidget(self.widget_main)
        
        self.view_theme_1 = None  # +
        self.view_theme_2 = None  # +
        
        self.createMenuBar()

        self.themes = Themes()                                                   # +++

        # условия для тем (чтобы задать стиль обьектов)
        if self.view_theme_1.isChecked() == True:
            self.themes.set_theme_number_1(self)                                 # + self.themes

        elif self.view_theme_2.isChecked() == True:
            self.themes.set_theme_number_2(self)                                 # + self.themes

        # вывод информации на строку состояния
        self.label_1 = QtWidgets.QLabel("v 1.0")
        self.label_1.setStyleSheet("font-size: 18px; color: black;")

        self.status_1.addPermanentWidget(self.label_1)

        self.status_1.showMessage("Добро пожаловать", msecs = 4000)
        
        self.setStatusBar(self.status_1)

        
    def createPage(self):
        """создание страницы в основном окне """

        self.widget_page = QtWidgets.QWidget()

        # создание обьектов
        self.button_1 = QtWidgets.QPushButton("Перейти к поиску телефонных\
                                            \nномеров и электронных почт")
        
        self.formbox = QtWidgets.QGridLayout()

        # добавление в box и в окно
        self.formbox.addWidget(self.button_1)
        self.formbox.setSpacing(20)
        self.widget_page.setLayout(self.formbox)

        # сделать главным комонентом
        return self.widget_page


    def createMenuBar(self):

        # создание панели-меню и строки состоянии
        self.menu = QtWidgets.QMenuBar()
        self.status_1 = QtWidgets.QStatusBar()

        # создание категорий меню и функционал в ней
        self.menu_options = QtWidgets.QMenu("Опции")
        self.menu_view = QtWidgets.QMenu('Вид')
        self.menu_help = QtWidgets.QMenu("Справка")

        # просто настройки
        self.sub_menu_options = QtWidgets.QMenu("Настройки")

        self.user_settings = QtWidgets.QAction("Пользовательские настройки")

        self.sub_menu_options.addAction(self.user_settings)

        self.menu_options.addMenu(self.sub_menu_options)

        # настройка тем
        self.sub_menu_view_themes = QtWidgets.QMenu("Цветовая схема")

        self.view_theme_1 = QtWidgets.QAction("Тёмно-синяя тема")
        self.view_theme_1.setCheckable(True)
        self.view_theme_2 = QtWidgets.QAction("Светло-серая тема")
        self.view_theme_2.setCheckable(True)
        self.view_theme_2.setChecked(True)

        self.group_action_5 = QtWidgets.QActionGroup(self.sub_menu_view_themes)

        self.group_action_5.addAction(self.view_theme_1)
        self.group_action_5.addAction(self.view_theme_2)
    
        self.sub_menu_view_themes.addAction(self.view_theme_1)
        self.sub_menu_view_themes.addAction(self.view_theme_2)
        
        self.menu_view.addMenu(self.sub_menu_view_themes)

        # добавляем отдельное меню в главное меню
        self.menu.addMenu(self.menu_options)
        self.menu.addMenu(self.menu_view)
        self.menu.addMenu(self.menu_help)

        # датчики
        self.user_settings.triggered.connect(self.clickedActionUser)
        self.view_theme_1.triggered.connect(self.clickedActionViewTheme)
        self.view_theme_2.triggered.connect(self.clickedActionViewTheme)

        # добавляем в окно
        self.setMenuBar(self.menu)


    # методы для датчиков
    def clickedActionViewTheme(self):
        if self.view_theme_1.isChecked() == True:
            self.themes.set_theme_number_1(self)                            # + self.themes

        elif self.view_theme_2.isChecked() == True:
            self.themes.set_theme_number_2(self)                            # + self.themes


    def clickedActionUser(self):
#        My_WindowSettings = WindowSettings(self)                           # - self 
#        My_WindowSettings.show()
        self.My_WindowSettings = WindowSettings()                           # +++  <<<======<
        self.My_WindowSettings.show()



class WindowSettings(QtWidgets.QWidget):
    """Класс реализующий пользовательские настройки
       в виде выводящего окна """

    def __init__(self, parent = None):
        QtWidgets.QWidget.__init__(self, parent)
        self.parent = parent

        # settings
        self.setFixedSize(500, 550)
        self.setWindowTitle("Пользовательские настройки")
        self.setWindowFlags(QtCore.Qt.Dialog)
        self.setWindowModality(QtCore.Qt.WindowModal)

        # делаем сборку
        self.createPage()

    def createPage(self):
        self.gridBox = QtWidgets.QGridLayout()

        self.tabWidget = QtWidgets.QTabWidget()
        self.button_save = QtWidgets.QPushButton("Применить")

        self.gridBox.addWidget(self.tabWidget, 0, 0)
        self.gridBox.addWidget(self.button_save, 1, 0, alignment = QtCore.Qt.AlignRight)
        self.setLayout(self.gridBox)

        # сборка tab-виджетов
        self.createTabWidget_Search()

    def createTabWidget_Search(self):
        self.tabWidget_1 = QtWidgets.QWidget()
        self.tabWidget.addTab(self.tabWidget_1, "настройки поиска")


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = MainWindow() 
    MainWindow.show()
    sys.exit(app.exec_())

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

→ Ссылка