首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于主窗口的Python3.x/ PySide2 / focusOutEvent没有触发

用于主窗口的Python3.x/ PySide2 / focusOutEvent没有触发
EN

Stack Overflow用户
提问于 2021-03-12 06:08:12
回答 1查看 172关注 0票数 0

每当我的应用失去焦点时,我都试图得到通知。但是简单地重新实现"focusOutEvent“是行不通的。

我发现这是一种解决办法:

PyQt window focus events not called

但我仍然感兴趣的是,是否有一种方法可以简单地使用"focusOutEvent“。这里有一个小示例应用程序,它不会为我做任何关于焦点事件的事情。

代码语言:javascript
运行
复制
#!/usr/bin/python3

from PySide2.QtGui import *
from PySide2.QtCore import *
from PySide2.QtWidgets import *
import sys

class MainWindow(QMainWindow):
  def __init__(self):
      super().__init__()
      print("Window created")
  def focusOutEvent(self, e):
      print(e)
      print("window lost focus")

def main():
  app = QApplication(sys.argv)
  window = MainWindow()
  window.show()
  app.exec_()

if __name__ == '__main__':
    main()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-12 08:45:28

你要找的是QEvent.WindowActivateQEvent.WindowDeactivate

代码语言:javascript
运行
复制
from PySide2 import QtWidgets
from PySide2 import QtCore

class Window(QtWidgets.QMainWindow):

    def event(self, event):
        if event.type() == QtCore.QEvent.WindowActivate:
            print('WindowActivate')
        elif event.type() == QtCore.QEvent.WindowDeactivate:
            print('WindowDeactivate')
        return super().event(event)

if __name__ == "__main__":
    app = QtWidgets.QApplication([])
    window = Window()
    window.show()
    app.exec_()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66595025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档