Я работаю над созданием настраиваемой настраиваемой строки заголовка для своего приложения, чтобы я мог создавать собственные действия / цвета в строке заголовка. Перемещение окна с помощью строки заголовка прекрасно работает. Конечно, тогда мне нужно было реализовать возможность изменения размера окна. Я заметил, что мог бы выполнить это sh, установив флаг окна
self.setWindowFlags(QtCore.Qt.CustomizeWindowHint)
Однако, когда я добавляю в эту строку кода, белая полоса / рамка появляется в верхней части приложения. Когда я удаляю эту строку, белая полоска исчезает, и, хотя я не могу изменить размер своего окна, строка заголовка работает очень хорошо (с точки зрения перемещения и функциональности).
Кто-нибудь знает, почему это происходит из-за этой строки? Есть ли способ избавиться от этого слипа или хотя бы изменить его цвет, чтобы он соответствовал моему заголовку? Урезанная версия строки заголовка находится ниже.
import sys
from PyQt5 import QtWidgets
from PyQt5 import QtCore
class MainWindow(QtWidgets.QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.layout = QtWidgets.QVBoxLayout()
self.layout.addWidget(MyBar(self))
self.setLayout(self.layout)
self.layout.setContentsMargins(0, 0, 0, 0)
self.layout.addStretch(-1)
self.setMinimumSize(800, 400)
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
self.pressing = False
self.setStyleSheet("""
background-color: gray;
color: white;
""")
self.setWindowFlags(QtCore.Qt.CustomizeWindowHint)
class MyBar(QtWidgets.QWidget):
def __init__(self, parent):
super(MyBar, self).__init__()
self.parent = parent
self.layout = QtWidgets.QHBoxLayout()
self.layout.setContentsMargins(0, 0, 0, 0)
self.title = QtWidgets.QLabel("My Own Bar")
btn_size = 35
self.btn_close = QtWidgets.QPushButton("x")
self.btn_close.clicked.connect(self.btn_close_clicked)
self.btn_close.setFixedSize(btn_size,btn_size)
self.btn_close.setStyleSheet("background-color: red;")
self.btn_min = QtWidgets.QPushButton("-")
self.btn_min.clicked.connect(self.btn_min_clicked)
self.btn_min.setFixedSize(btn_size, btn_size)
self.btn_min.setStyleSheet("background-color: gray;")
self.btn_max = QtWidgets.QPushButton("+")
self.btn_max.clicked.connect(self.btn_max_clicked)
self.btn_max.setFixedSize(btn_size, btn_size)
self.btn_max.setStyleSheet("background-color: gray;")
self.title.setFixedHeight(35)
self.title.setAlignment(QtCore.Qt.AlignCenter)
self.layout.addWidget(self.title)
self.layout.addWidget(self.btn_min)
self.layout.addWidget(self.btn_max)
self.layout.addWidget(self.btn_close)
self.title.setStyleSheet("""
background-color: black;
color: white;
""")
self.setLayout(self.layout)
self.start = QtCore.QPoint(0, 0)
self.pressing = False
def resizeEvent(self, QResizeEvent):
super(MyBar, self).resizeEvent(QResizeEvent)
self.title.setFixedWidth(self.parent.width())
def mousePressEvent(self, event):
self.start = self.mapToGlobal(event.pos())
self.pressing = True
def mouseMoveEvent(self, event):
if self.pressing:
self.end = self.mapToGlobal(event.pos())
self.movement = self.end-self.start
self.parent.setGeometry(self.mapToGlobal(self.movement).x(),
self.mapToGlobal(self.movement).y(),
self.parent.width(),
self.parent.height())
self.start = self.end
def mouseReleaseEvent(self, QMouseEvent):
self.pressing = False
def btn_close_clicked(self):
self.parent.close()
def btn_max_clicked(self):
self.parent.showMaximized()
def btn_min_clicked(self):
self.parent.showMinimized()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
mw = MainWindow()
mw.show()
sys.exit(app.exec_())
Белая полоска видна ниже