Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (1)

Лучшие ответы пользователя

Все ответы (2)
  • Возможно ли окно у окна отключить взаимодействие?

    @EldarAliev7661
    Задать self.setWindowFlags(QtCore.Qt.Dialog). или создать его как диалоговое окно QtWidget.QDialog(parent).

    Qt::Dialog - Указывает, что виджет представляет собой окно, которое должно быть оформлено как диалоговое окно (т. е. обычно в строке заголовка нет кнопок развертывания и свертывания). Это тип по умолчанию дляQDialog. Если вы хотите использовать его в качестве модального диалога, его следует запускать из другого окна или иметь родительский элемент и использовать сQWidget::windowModalityсвойство. Если вы сделаете его модальным, диалоговое окно не позволит другим окнам верхнего уровня приложения получать какие-либо данные. Мы ссылаемся на окно верхнего уровня, у которого есть родительский элемент, как на вторичное окно.
    https://doc.qt.io/qt-5/qt.html#WindowModality-enum


    Мне этот вариант подашёл. При открытии вторых окон родительское окно блокируется. У QDialog по умолчанию стоит флаг Dialog, но не смотря на это с этим флагом появляется эффект затемнения родительского окна, что мне понравилось.

    class Window(QtWidgets.QMainWindow):
    
        def __init__(self):
            super(Window, self).__init__()
            # .... code
            self.show()
    
        def _openSettings(self):
            WindowSettings(self)
    
    
    
    class WindowSettings(QtWidgets.QDialog):
    
        def __init__(self, window):
            super(WindowSettings, self).__init__(window, QtCore.Qt.Window)
            self.setWindowFlags(QtCore.Qt.Dialog)
            self.setWindowModality(QtCore.Qt.WindowModal)
    
            # .... code
            self.show()
    
        def save(self):
            # code saveing  К примеру self.window.setSettings(arg)
            self.deleteLater()
    Ответ написан
    Комментировать