How to hide or disable butons (minimize, maximize, close) MainWindow
-
Hello, I would like to avoid pressing the minimize, maximize, and exit buttons. Is it possible to hide these buttons so that they are invisible or disable them from responding to touch? A simple test code is attached for demonstration. The application runs on Raspberry Pi-4, Debian Trixie.

# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'test.ui' # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. # msgBox.setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowTitleHint) # setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False) from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 233) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())With best regards, Vlado
-
Hello, I would like to avoid pressing the minimize, maximize, and exit buttons. Is it possible to hide these buttons so that they are invisible or disable them from responding to touch? A simple test code is attached for demonstration. The application runs on Raspberry Pi-4, Debian Trixie.

# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'test.ui' # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. # msgBox.setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowTitleHint) # setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False) from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 233) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())With best regards, Vlado
@California said in How to hide or disable butons (minimize, maximize, close) MainWindow:
setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False)
Like this on the main window. Some suitable combination of the flags shown in class WindowType, scroll down to "The
CustomizeWindowHintflag" table. -
@California said in How to hide or disable butons (minimize, maximize, close) MainWindow:
setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False)
Like this on the main window. Some suitable combination of the flags shown in class WindowType, scroll down to "The
CustomizeWindowHintflag" table.@JonB said in How to hide or disable butons (minimize, maximize, close) MainWindow:
setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False)
I found it, but I just don't know how to use it. I got an error:
NameError: name 'setWindowFlag' is not definedWould you be so kind to describe how to use this function properly in code posted above!
-
@JonB said in How to hide or disable butons (minimize, maximize, close) MainWindow:
setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False)
I found it, but I just don't know how to use it. I got an error:
NameError: name 'setWindowFlag' is not definedWould you be so kind to describe how to use this function properly in code posted above!
@California
You have a bunch ofMainWindow.set...()method calls. So did you similarly doMainWindow.setWindowFlag(...), e.g.MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False)and for the other flags you want to clear? -
@California
You have a bunch ofMainWindow.set...()method calls. So did you similarly doMainWindow.setWindowFlag(...), e.g.MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False)and for the other flags you want to clear?@JonB I put
MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False)in to diferent places in code, this time no error appeared, however Close Button is stil visable and click to it makes MainWindow dissapeared...
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'test.ui' # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 233) MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) #MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() #MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False) ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_()) -
@JonB I put
MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False)in to diferent places in code, this time no error appeared, however Close Button is stil visable and click to it makes MainWindow dissapeared...
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'test.ui' # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 233) MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) #MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() #MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False) ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())@California
I gave you the link to the PySide page describing the window flags. Did you read it? Please do so when asking questions/seeking to understand. Did you act on it stating:The CustomizeWindowHint flag is used to enable customization of the window controls. This flag must be set to allow the WindowTitleHint, WindowSystemMenuHint, WindowMinimizeButtonHint, WindowMaximizeButtonHint and WindowCloseButtonHint flags to be changed.
-
@California
I gave you the link to the PySide page describing the window flags. Did you read it? Please do so when asking questions/seeking to understand. Did you act on it stating:The CustomizeWindowHint flag is used to enable customization of the window controls. This flag must be set to allow the WindowTitleHint, WindowSystemMenuHint, WindowMinimizeButtonHint, WindowMaximizeButtonHint and WindowCloseButtonHint flags to be changed.
@JonB I did read provided site and I changed command as suggested. As said:
Qt.WindowCloseButtonHint … Adds a close button. On some platforms this implies Qt::WindowSystemMenuHint for it to work.in my case:
MainWindow.setWindowFlag(QtCore.Qt.WindowSystemMenuHint, False)but stil the same result. No error, Close button in function. I am not sure what I am missing here...
-
@JonB I did read provided site and I changed command as suggested. As said:
Qt.WindowCloseButtonHint … Adds a close button. On some platforms this implies Qt::WindowSystemMenuHint for it to work.in my case:
MainWindow.setWindowFlag(QtCore.Qt.WindowSystemMenuHint, False)but stil the same result. No error, Close button in function. I am not sure what I am missing here...
@California
That's is not really or necessarily what it says. I would try:MainWindow.setWindowFlag(QtCore.Qt.CustomizeWindowHint, True) # This one is important MainWindow.setWindowFlag(QtCore.Qt.WindowMinimizeButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowMaximizeButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowSystemMenuHint, False) # Don't know about this oneStart with: do any of these influence the window? If not, are you running Xorg/other or Wayland?
-
@California
That's is not really or necessarily what it says. I would try:MainWindow.setWindowFlag(QtCore.Qt.CustomizeWindowHint, True) # This one is important MainWindow.setWindowFlag(QtCore.Qt.WindowMinimizeButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowMaximizeButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowSystemMenuHint, False) # Don't know about this oneStart with: do any of these influence the window? If not, are you running Xorg/other or Wayland?
@JonB I am on Wayland. Tried diferent options as you can see in code below, none of them worked.
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'test.ui' # # Created by: PyQt5 UI code generator 5.15.9 # WindowSystemMenuHint # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets # setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint); class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 233) """ MainWindow.setWindowFlag(QtCore.Qt.CustomizeWindowHint, True) # This one is important MainWindow.setWindowFlag(QtCore.Qt.WindowMinimizeButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowMaximizeButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False) #MainWindow.setWindowFlag(QtCore.Qt.WindowSystemMenuHint, False) # Don't know about this one MainWindow.setWindowFlag(QtCore.Qt.WindowSystemMenuHint, True) # Don't know about this one """ self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) """ MainWindow.setWindowFlag(QtCore.Qt.CustomizeWindowHint, True) # This one is important MainWindow.setWindowFlag(QtCore.Qt.WindowMinimizeButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowMaximizeButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False) #MainWindow.setWindowFlag(QtCore.Qt.WindowSystemMenuHint, False) # Don't know about this one MainWindow.setWindowFlag(QtCore.Qt.WindowSystemMenuHint, True) # Don't know about this one """ self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() #""" MainWindow.setWindowFlag(QtCore.Qt.CustomizeWindowHint, True) # This one is important MainWindow.setWindowFlag(QtCore.Qt.WindowMinimizeButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowMaximizeButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False) #MainWindow.setWindowFlag(QtCore.Qt.WindowSystemMenuHint, False) # Don't know about this one MainWindow.setWindowFlag(QtCore.Qt.WindowSystemMenuHint, True) # Don't know about this one #""" ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())Thanks for helping, after one hour I will not have an acces to PC for few days. In Sunday back again.
With best regards, Vlado -
@JonB I am on Wayland. Tried diferent options as you can see in code below, none of them worked.
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'test.ui' # # Created by: PyQt5 UI code generator 5.15.9 # WindowSystemMenuHint # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets # setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint); class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 233) """ MainWindow.setWindowFlag(QtCore.Qt.CustomizeWindowHint, True) # This one is important MainWindow.setWindowFlag(QtCore.Qt.WindowMinimizeButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowMaximizeButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False) #MainWindow.setWindowFlag(QtCore.Qt.WindowSystemMenuHint, False) # Don't know about this one MainWindow.setWindowFlag(QtCore.Qt.WindowSystemMenuHint, True) # Don't know about this one """ self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) """ MainWindow.setWindowFlag(QtCore.Qt.CustomizeWindowHint, True) # This one is important MainWindow.setWindowFlag(QtCore.Qt.WindowMinimizeButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowMaximizeButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False) #MainWindow.setWindowFlag(QtCore.Qt.WindowSystemMenuHint, False) # Don't know about this one MainWindow.setWindowFlag(QtCore.Qt.WindowSystemMenuHint, True) # Don't know about this one """ self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() #""" MainWindow.setWindowFlag(QtCore.Qt.CustomizeWindowHint, True) # This one is important MainWindow.setWindowFlag(QtCore.Qt.WindowMinimizeButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowMaximizeButtonHint, False) MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False) #MainWindow.setWindowFlag(QtCore.Qt.WindowSystemMenuHint, False) # Don't know about this one MainWindow.setWindowFlag(QtCore.Qt.WindowSystemMenuHint, True) # Don't know about this one #""" ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())Thanks for helping, after one hour I will not have an acces to PC for few days. In Sunday back again.
With best regards, Vlado@California said in How to hide or disable butons (minimize, maximize, close) MainWindow:
I am on Wayland.
Then you will not be able to alter the window furniture, position and other things. And you are not intended to.
-
@California said in How to hide or disable butons (minimize, maximize, close) MainWindow:
I am on Wayland.
Then you will not be able to alter the window furniture, position and other things. And you are not intended to.
@JonB Well, tested on X11 as well, same result ...
-
If those flags are honored or not depends on the window manager: " Some of these flags depend on whether the underlying window manager supports them."