pythonpyqtpyqt5desktop-applicationqapplication

Pyqt5 window full screen does not show border


I create a pyqt window without any title bar and transparent. Also added blue border for my window but when on running the app I can't see any blue border for the window.

from PyQt5.QtWidgets import * 
from PyQt5.QtGui import * 
from PyQt5.QtCore import Qt
import sys
  
class Window(QMainWindow):
    def __init__(self):
        super().__init__()
  
        # this will hide the title bar
        self.setWindowFlag(Qt.FramelessWindowHint)
        self.setStyleSheet("border : 3px solid blue;")
        self.setWindowOpacity(0.01)
        # setting  the geometry of window
        self.setGeometry(100, 100, 400, 300)
        self.showFullScreen()
  
  
  
# create pyqt5 app
App = QApplication(sys.argv)
  
# create the instance of our Window
window = Window()
window.show()
# start the app
sys.exit(App.exec())

How can I show the border for my window?


Solution

  • You can use the TranslucentBackground attribute and paint the border/background in paintEvent.

    class Window(QMainWindow):
        def __init__(self):
            super().__init__()
      
            # this will hide the title bar
            self.setWindowFlag(Qt.FramelessWindowHint)
            self.setAttribute(Qt.WA_TranslucentBackground)
            
            # setting  the geometry of window
            self.setGeometry(100, 100, 400, 300)
            self.showFullScreen()
    
        def paintEvent(self, event):
            qp = QPainter(self)
            qp.setPen(QPen(Qt.blue, 6))
            qp.drawRect(self.rect())
            
            qp.setOpacity(0.01)
            qp.setPen(Qt.NoPen)
            qp.setBrush(self.palette().window())
            qp.drawRect(self.rect())