微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

主窗口的 Python 3.x/PySide2/focusOutEvent 未触发

如何解决主窗口的 Python 3.x/PySide2/focusOutEvent 未触发

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

我发现这是一种解决方法

PyQt window focus events not called

但是我仍然很感兴趣,是否有办法以某种方式简单地使用“focusOutEvent”。这是一个小示例应用,它对我的​​ focusevents 没有任何帮助。

#!/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()

解决方法

您要查找的内容称为 QEvent.WindowActivateQEvent.WindowDeactivate

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_()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。