12

我想知道如何禁用pyqt4中的窗口最大化按钮。我目前正在使用 QWidget.setFixedSize (self, QSize) 来防止用户窗口调整大小,但是最大化按钮仍然处于启用状态,并且当按下时会导致应用程序移动到屏幕的左上角。我基本上想复制 Windows 计算器应用程序的行为,其中最大化图标是灰色的。有谁知道如何使用 PyQt4 实现这一目标?

4

5 回答 5

16

没有使用它,但研究似乎指向弄乱窗口标志。

QWidget有一个名为setWindowFlags.

是 Qt.WindowFlags 类的文档。

是所有标志的参考。寻找Qt.WindowMaximizeButtonHint

一般来说,您似乎需要找到一种方法来启用Qt.CustomizeWindowHint标志和禁用Qt.WindowMaximizeButtonHint标志。无论哪种方式,您可能还想要这个,setFixedSize所以这是一个好的开始。

编辑:

就像是

win.setWindowFlags(win.windowFlags() | QtCore.Qt.CustomizeWindowHint)
win.setWindowFlags(win.windowFlags() & ~QtCore.Qt.WindowMaximizeButtonHint)

假设您的导入是这样的

from PyQt4 import QtCore

我希望这会打开CustomizeWindowHint旗帜并关闭WindowMaximizeButtonHint旗帜。让我知道这是否有效。

编辑:

正如 OP 所发现的,他想要的结果唯一需要的调用:

win.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint)

但要小心,因为这也会删除关闭按钮并可能与其他窗口标志混淆。

于 2013-09-03T19:49:10.773 回答
14

这完美地工作:

MainWindow.setWindowFlags(QtCore.Qt.WindowCloseButtonHint | QtCore.Qt.WindowMinimizeButtonHint)
于 2016-01-22T16:04:10.323 回答
1

您可以将 maximumSize 和 minimumSize 设置为相同的值,它将消失最大化按钮

于 2015-03-13T21:44:36.890 回答
1

This helped me:

Form.setMaximumSize(QtCore.QSize(width, height))

It would go here in your class:

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(328, 212)
        Form.setMaximumSize(QtCore.QSize(352, 189))
于 2020-08-29T12:18:28.160 回答
0

这适用于 PyQT6:

MainWindow.setWindowFlags(QtCore.Qt.WindowType.CustomizeWindowHint | QtCore.Qt.WindowType.WindowCloseButtonHint | QtCore.Qt.WindowType.WindowMinimizeButtonHint)

希望它有用!

于 2021-10-03T21:20:22.420 回答