паразитная строка заголовка при PyQt6+ QWebEngineView + FramelessWindowHint

tonton-macout

Новичок
Пользователь
Фев 24, 2025
2
0
1
Всем привет!
Я новичок в пайтон, пишу программу, столкнулся с проблемой.
При использовании веб браузера, если свернуть и развернуть программу появляется ранее скрытая строка заголовка.
Ее видно если окно сделать прозрачным или края закруглить, а это именно мой случай)

Снимок экрана 2025-02-24 105400.png

пробовал разные подходы, мучал нейросети, ничего не выходит
если кликнуть и отпустить мышку на строку ввода то заголовок пропадает
но если програмно это событие вызвать то нет


Постарался привести скрипт к минимальному виду где проблему можно наблюдать.
Версия пайтона 3.13
Винда 10, 11
Необходимые библиотеки
pip install PyQt6 PyQt6-WebEngine


Python:
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton, QLineEdit
from PyQt6.QtCore import Qt, QEvent, QPointF
from PyQt6.QtGui import QMouseEvent, QPainter, QColor, QPen, QBrush
from PyQt6.QtWebEngineWidgets import QWebEngineView
class WebBrowser(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("app")
        self.setWindowFlags(Qt.WindowType.FramelessWindowHint)
        self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)
        
        self.setMinimumSize(400, 300)
        
        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)
        
        self.browser = QWebEngineView()
        self.browser.setFixedHeight(400)
        self.url_bar = QLineEdit()
        self.url_bar.setPlaceholderText("Enter URL here...")
        self.minimize_btn = QPushButton("🗕")
        self.minimize_btn.setStyleSheet("background-color: rgba(0, 100, 0, 255); margin: 10px 50px;")
        self.minimize_btn.clicked.connect(self.showMinimized)
        self.layout = QVBoxLayout()
        self.layout.addWidget(self.url_bar)
        self.layout.addWidget(self.minimize_btn)
        self.layout.addWidget(self.browser)
        self.central_widget.setLayout(self.layout)
        self.old_pos = None
 
    # фон и рамка 
    def paintEvent(self, event):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.RenderHint.Antialiasing)
        painter.setBrush(QColor(100, 100, 100, 200))
        painter.setPen(Qt.PenStyle.NoPen)
        painter.drawRoundedRect(self.rect().adjusted(9, 9, -9, -9), 15, 15)
        painter.setPen(QPen(QColor(49, 113, 49, 150), 10))
        painter.setBrush(Qt.BrushStyle.NoBrush)
        painter.drawRoundedRect(self.rect().adjusted(4, 4, -4, -4), 20, 20)
    # для перетаскивания
    def mousePressEvent(self, event):
        if event.button() == Qt.MouseButton.LeftButton and event.position().y() < 100:
            self.old_pos = event.globalPosition().toPoint()
    def mouseMoveEvent(self, event):
        if self.old_pos is not None:
            delta = event.globalPosition().toPoint() - self.old_pos
            self.move(self.x() + delta.x(), self.y() + delta.y())
            self.old_pos = event.globalPosition().toPoint()
    def mouseReleaseEvent(self, event):
        self.old_pos = None
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = WebBrowser()
    window.show()
    sys.exit(app.exec())
 

tonton-macout

Новичок
Пользователь
Фев 24, 2025
2
0
1
похоже это неисправимо на текущий момент и надо ждать версии 5.10
 

Форум IT Специалистов