Как в PyQt5 убрать верхнюю рамку?

Хочу избавиться от верхней рамки с подписью MainWindow и кнопкой закрытия окна. То есть вместо этого:

окно с рамкой

Нужно получить такой результат:

окно без рамки

Мой код состоит из двух файлов:

main.py:

from main_window import Ui_MainWindow
from PyQt5 import QtWidgets
import sys

if __name__ == "__main__":

   app = QtWidgets.QApplication(sys.argv)
   MainWindow = QtWidgets.QDialog()
   mw = Ui_MainWindow()
   mw.setupUi(MainWindow)
   MainWindow.show()

main_window.py:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):

       MainWindow.setObjectName("MainWindow")
       MainWindow.resize(720, 345)
       MainWindow.setStyleSheet("")

       self.centralwidget = QtWidgets.QWidget(MainWindow)
       self.centralwidget.setStyleSheet("")
       self.centralwidget.setObjectName("centralwidget")

И так далее.

Я понимаю, что можно убрать верхнюю рамку, ссылаясь на файл в формате .ui, но не понимаю, как сделать это в моем случае.

Помогите разобраться, пожалуйста!


Ответы (1 шт):

Автор решения: S. Nick

enum Qt::WindowType
flags Qt::WindowFlags

Этот тип перечисления используется для указания различных свойств оконной системы для виджета. Они довольно необычны, но необходимы в некоторых случаях. Некоторые из этих флагов зависят от того, поддерживает ли их основной оконный менеджер.

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(720, 345)
        MainWindow.setStyleSheet("")

        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.centralwidget.setStyleSheet("#centralwidget {background-color: #347474;}")
        self.setCentralWidget(self.centralwidget)        
        self.layout = QtWidgets.QGridLayout(self.centralwidget)
        self.layout.setObjectName("layout")
        
        self.progressBar = QtWidgets.QProgressBar()
        self.progressBar.setObjectName("progressBar")
        self.progressBar.setRange(0, 0)
        self.progressBar.setTextVisible(False)
        self.progressBar.setStyleSheet("""
            #progressBar {
                min-height: 20px;            
                max-height: 20px;
                border-radius: 4px;
                min-width: 400px;            
                
            } 
            #progressBar::chunk {
                border-radius: 4px;
                background-color: #009688;
            }
        """)
        self.label = QtWidgets.QLabel("ТЕКСТ")
        self.label.setObjectName("label")
        self.label.setStyleSheet("""
            #label {
                color: #F2FA5A;
                font-size: 70px;
            } 
        """)
        self.pushButton = QtWidgets.QPushButton("Меню")
        self.pushButton.setObjectName("pushButton")
        self.pushButton.setFixedSize(100, 40)
        self.pushButton.setStyleSheet("""
            #pushButton {
                background-color: #2196f3;
                color: #F2FA5A;
                font-size: 20px;
                border-radius: 20px;
            } 
        """)

        self.layout.addWidget(self.progressBar, 1, 1, alignment=QtCore.Qt.AlignCenter)        
        self.layout.addWidget(self.label, 2, 1, alignment=QtCore.Qt.AlignCenter)
        self.layout.addWidget(self.pushButton, 3, 1, alignment=QtCore.Qt.AlignCenter)


class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        
        self.setupUi(self) 

        self.setWindowFlags(QtCore.Qt.FramelessWindowHint |           # !!! +++
                            QtCore.Qt.WindowStaysOnTopHint)           # !!! +++

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
# ---------------------------> vvvvvvv <------------ ?????????
# ???   MainWindow = QtWidgets.QDialog()
#   mw = Ui_MainWindow()
#   mw.setupUi(MainWindow)
#   MainWindow.show()

    mw = MainWindow()
    mw.show()
    sys.exit(app.exec())

введите сюда описание изображения

→ Ссылка