【问题标题】:how to make a window not moveable in pyqt5如何在pyqt5中使窗口不可移动
【发布时间】:2021-03-17 03:19:12
【问题描述】:

我想“锁定”我的界面,以便用户无法将窗口从其位置移动,我该怎么做?

目前我只找到了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_())

【问题讨论】:

  • 我猜你可以设置窗口标志 FramelessWindowHint。
  • @Heike 感谢它的工作self.setWindowFlags(qtc.Qt.FramelessWindowHint)
  • @Heike 你知道如果我添加这一行,为什么我的窗口会关闭吗? elif self.radiobutton.isChecked(): `self.setWindowFlags(qtc.Qt.FramelessWindowHint)`
  • @HoboCoder radiobutton 是什么?
  • @eyllanesc 它是QRadioButton

标签: python user-interface pyqt5


【解决方案1】:

例如,将信号toggled 连接到self.test_button1

[signal]void QAbstractButton::toggled(bool check)

每当可检查按钮更改其状态时,都会发出此信号。如果按钮被选中,checked 为 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_())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 2020-12-19
    • 2016-10-09
    • 2023-04-06
    • 2022-10-26
    • 2011-03-06
    相关资源
    最近更新 更多