我有一个PyQt4程序,试图按照QUndoGroup文档中的建议,在窗口获得焦点时收到通知:
通常在关联的文档窗口接收到焦点时,调用QUndoStack :: setActive()指定哪个堆栈是活动的是程序员的责任。但是我遇到了一个奇怪的问题,只有一个窗口实际上会收到焦点进入和离开事件,而其他窗口则在创建时只收到一次或根本不收到。下面是一个示例程序:
#!/usr/bin/env python
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
class MyWindow(QMainWindow):
def __init__(self):
super(MyWindow, self).__init__()
self.label = QLabel('Window')
self.setCentralWidget(self.label)
self.setFocusPolicy(Qt.StrongFocus)
def focusInEvent(self, event):
self.label.setText('Got focus')
def focusOutEvent(self, event):
self.label.setText('Lost focus')
def main():
app = QApplication(sys.argv)
win1 = MyWindow()
win2 = MyWindow()
win1.show()
win2.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()