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
Forum Updated to NodeBB v4.3 + New Features

Hover color appears when restoring window from taskbar on Windows

Scheduled Pinned Locked Moved Unsolved Qt for Python
1 Posts 1 Posters 117 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