как сделать окно не перемещаемым в pyqt5 - PullRequest
1 голос
/ 17 марта 2020

Я хочу "заблокировать" мой интерфейс, чтобы пользователь не мог переместить окно с его позиции, как я могу это сделать?
Пока я нашел только класс QDockWidg, который можно установить на setFloating(False)
, но как мне это сделать с моим окном ниже?

import sys

import os
import sys
from PyQt5 import QtWidgets as qtw
from PyQt5 import QtCore as qtc
from PyQt5 import QtGui as qtg



class Example(qtw.QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # your code will go here


        vlayout = qtw.QVBoxLayout()
        hlayout = qtw.QHBoxLayout()

        heading = qtw.QLabel("wählen")
        self.test_button1 = qtw.QRadioButton("test1")
        self.test_button2 = qtw.QRadioButton("test2")

        self.select_button = qtw.QPushButton("select")

        hlayout.addWidget(self.test_button1)
        hlayout.addWidget(self.test_button1)


        vlayout.addWidget(heading)
        vlayout.addLayout(hlayout)
        vlayout.addWidget(self.select_button)

        self.setLayout(vlayout)

        self.show()



if __name__ == '__main__':
    app = qtw.QApplication(sys.argv)
    w = Example()

    w.show()
    sys.exit(app.exec_())

1 Ответ

0 голосов
/ 17 марта 2020

Например, подключите сигнал toggled к self.test_button1.

[сигнал] void QAbstractButton :: toggled (bool проверено)

Этот сигнал испускается всякий раз, когда проверяемая кнопка меняет свое состояние. флажок true, если кнопка отмечена, или false, если кнопка не отмечена.

В слоте on_off_func проверьте состояние self.test_button1 и установите желаемое значение Flag. После этого обязательно позвоните self.show ().

import sys
from PyQt5 import QtWidgets as qtw
from PyQt5 import QtCore as qtc
from PyQt5 import QtGui as qtg



class Example(qtw.QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # your code will go here


        vlayout = qtw.QVBoxLayout()
        hlayout = qtw.QHBoxLayout()

        heading = qtw.QLabel("wählen")
        self.test_button1 = qtw.QRadioButton("test1")
        self.test_button1.toggled.connect(self.on_off_func)          # +
        self.test_button2 = qtw.QRadioButton("test2")

        self.select_button = qtw.QPushButton("select")

        hlayout.addWidget(self.test_button1)
        hlayout.addWidget(self.test_button2)

        vlayout.addWidget(heading)
        vlayout.addLayout(hlayout)
        vlayout.addWidget(self.select_button)

        self.setLayout(vlayout)

        self.show()

    def on_off_func(self, checked):
        if checked:
            self.setWindowFlags(qtc.Qt.FramelessWindowHint)
        else:
            self.setWindowFlags(qtc.Qt.Window)
        self.show()

if __name__ == '__main__':
    app = qtw.QApplication(sys.argv)
    w = Example()
    w.show()
    sys.exit(app.exec_())

enter image description here

...