如何使用setWindowLongPtr(hwnd、GWL_EXSTYLE、WS_EX_NOACTIVATE)?

2024-04-25 00:12:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个具有以下属性的窗口:

  • 它应该永远在上面
  • 能够接收鼠标事件(移动和单击)
  • 单击时不会窃取键盘焦点

由于不存在通过Qt的解决方案,我知道我们必须在Windows平台上使用Win32 API。我必须用这个电话:
SetWindowLongPtr(hwnd, GWL_EXSTYLE, WS_EX_NOACTIVATE)
但是如何在Python代码中实现这一点呢

这里解释得很好:qt_forum

我的代码:

class Ui_self(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(150, 200)
        self.secret_button = QtWidgets.QPushButton(self) 
        self.secret_button.setText("# tag")
        elf.setWindowFlags(Qt.WindowStaysOnTopHint) 
        elf.setWindowFlags(Qt.FramelessWindowHint)
        self.secret_button.setFocusPolicy(Qt.NoFocus)
        self.setFocusPolicy(Qt.NoFocus)
        self.setAttribute(Qt.WA_ShowWithoutActivating)
           
if __name__ == "__main__":
    app = QApplication(sys.argv)
    ex = Ui_self()
    ex.show()
    sys.exit(app.exec()) 

Tags: 代码selfappuisecret属性initsys