Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt for Python
  4. Hover color appears when restoring window from taskbar on Windows
Qt 6.11 is out! See what's new in the release blog

Hover color appears when restoring window from taskbar on Windows

Scheduled Pinned Locked Moved Unsolved Qt for Python
1 Posts 1 Posters 391 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • V Offline
    V Offline
    vdi23
    wrote on last edited by
    #1

    Hello!
    I just started learning PyQt6 in Python. I have the following code: I click on the minimize button, the window disappears, if I click on the button in the taskbar it comes back but when it comes back, the minimize button has for a very short time the hover background color and not the initial one. Does anyone have any idea why or how I can solve this?

    main.py

    import sys
    from PyQt6.QtWidgets import (
        QApplication,
        QMainWindow,
        QWidget,
        QHBoxLayout,
        QVBoxLayout,
        QPushButton,
        QFrame,
        QLabel,
        QDialog
    )
    from PyQt6.QtGui import (
        QIcon,
        QCursor,
        QMouseEvent,
        QPixmap
    )
    from PyQt6.QtCore import (
        Qt,
        QPropertyAnimation,
        QEasingCurve,
        QEvent,
        QFile
    )
    
    class TitleBar(QWidget):
        def __init__(self, parent):
            super().__init__(parent)
            self.parent = parent
            self.setFixedHeight(35)
           
            TitleBar_Layout = QHBoxLayout(self)
            TitleBar_Layout.setContentsMargins(0, 0, 0, 0)
            TitleBar_Layout.setSpacing(0)
    
            icon_label = QLabel('')
            icon_label.setFixedSize(15, 15)
    
            title_label = QLabel('My Window')
            title_label.setFixedSize(200, 15)
            title_label.setObjectName('title_label')
            
            self.close_button = QPushButton('X')
            self.close_button.setFixedSize(35, 35)
            self.close_button.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
            self.close_button.setFocusPolicy(Qt.FocusPolicy.NoFocus)
            self.close_button.clicked.connect(self._close_Window)
            self.close_button.setObjectName('close_button')
    
            self.minimize_button = QPushButton('-')
            self.minimize_button.setFixedSize(35, 35)
            self.minimize_button.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
            self.minimize_button.setFocusPolicy(Qt.FocusPolicy.NoFocus)
            self.minimize_button.clicked.connect(self._minimize_window)
            self.minimize_button.setObjectName('min_button')
        
            TitleBar_Layout.addSpacing(10)
            TitleBar_Layout.addWidget(icon_label)
            TitleBar_Layout.addSpacing(5)
            TitleBar_Layout.addWidget(title_label)
            TitleBar_Layout.addStretch()
            TitleBar_Layout.addWidget(self.minimize_button)
            TitleBar_Layout.addWidget(self.close_button)
    
            self.start_position = None
        
        def mousePressEvent(self, event: QMouseEvent):
            if event.button() == Qt.MouseButton.LeftButton:
                self.start_position = event.globalPosition().toPoint() -     self.parent.frameGeometry().topLeft()
                event.accept()
        
        def mouseMoveEvent(self, event: QMouseEvent):
            if event.buttons() == Qt.MouseButton.LeftButton and self.start_position:
                self.parent.move(event.globalPosition().toPoint() - self.start_position)
                event.accept()
        
        def _close_Window(self):
            self.parent.close()
        
        def _minimize_window(self):
            self.parent.showMinimized()       
    
    class ChildWindow(QDialog):
        def __init__(self, parent):
            super().__init__()
            self.setFixedSize(200, 200)
            self.setWindowIcon(QIcon('icons/sun.png'))
            self.setWindowTitle('Modal Window')
            
    class Window(QMainWindow):
        def __init__(self):
            super().__init__()
            self.setWindowFlags(Qt.WindowType.FramelessWindowHint)
            self.setWindowTitle('My Window')
            self.setWindowIcon(QIcon('icons/sun.png'))
            self.setFixedSize(400, 500)
            
            self.centerWindow()
    
            WindowContainer = QWidget(self)
            self.setCentralWidget(WindowContainer)
    
            self.TitleBar = TitleBar(self)
            self.setMenuWidget(self.TitleBar)
    
    
            WindowGrid = QVBoxLayout()
            WindowGrid.setAlignment(Qt.AlignmentFlag.AlignCenter)
    
            frame = QFrame()
            frame.setFixedSize(250, 400)
            frame.setObjectName('frame')
            
    
            show_dialog = QPushButton('Show Dialog', frame)
            show_dialog.clicked.connect(self.showDialog)
            show_dialog.setObjectName('open_child_window')
    
    
            WindowGrid.addWidget(show_dialog)
    
            WindowContainer.setLayout(WindowGrid)
        
        def showDialog(self):
            self.dg = ChildWindow(self)
            self.dg.exec()
    
        def centerWindow(self):
            primary_screen = QApplication.primaryScreen()
            primary_screen_geometry = primary_screen.availableGeometry()
    
            center_x = (primary_screen_geometry.width() - self.width()) // 2
            center_y = (primary_screen_geometry.height() - self.height()) // 2
    
            self.move(center_x, center_y)
    
      if __name__ == '__main__':
        app = QApplication([])
        window = Window()
        with open('style.qss', 'r') as f:
            style = f.read()
            # Set the stylesheet of the application
            app.setStyleSheet(style)
        window.show()
        sys.exit(app.exec())
    

    style.qss

    * {
        background-color: #222222;
    }
    
    #close_button {
        border: 0px;
        background-color: #222222;;
        margin: 0px;
        padding: 0px;
    }
                
    #close_button:hover {
        background-color: #ff0000;                            
    }
    
    #min_button {
        border: 0px;
        background-color: #222222;
        margin: 0px;
        padding: 0px;
     }
    
    #min_button:hover {
        background-color: #464646;
     }
    
    #frame {
        background-color: #c0c0c0;
    }
    
    #open_child_window {
        background-color: #0066cc;
        color: #ffffff;
        border: 0px;
        width: 150;
         height: 30;
        border-radius: 5px;
        }
    
    #open_child_window:hover {
        background-color: #1172d4;
    }
    
    #title_label {
        color: #bababa;
        font-size: 12px;
    }
    

    I hope I don't have any errors in the code during copy-paste. It works, but aesthetically I'm bothered by that hover color that appears when restoring the window.
    Has anyone else encountered this problem?

    Some information about my config:
    Python version: Python 3.13.0
    PyQt6 version: 6.8.0
    OS: Windows 10 x64
    Text editor used: VSCode

    1 Reply Last reply
    0

    • Login

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Get Qt Extensions
    • Unsolved