창이 변경 될 때 이벤트를 트리거하는 방법을 알아 냈습니다. 그러나 데이터베이스에서 창 정보를 읽을 때 발생합니다. 그리고 데이터베이스에 쓸 때 창이 줄어들 기 때문에 창을 바꿀 때마다 축소 버튼을 클릭하여 내 이벤트를 트리거하고 싶습니다.최소화 버튼 클릭시 pyqt 이벤트 트리거
답변
:
from PyQt4 import QtGui, QtCore
class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
def changeEvent(self, event):
if event.type() == QtCore.QEvent.WindowStateChange:
if self.windowState() & QtCore.Qt.WindowMinimized:
print('changeEvent: Minimised')
elif event.oldState() & QtCore.Qt.WindowMinimized:
print('changeEvent: Normal/Maximised/FullScreen')
QtGui.QWidget.changeEvent(self, event)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.resize(300, 300)
window.show()
sys.exit(app.exec_())
그것은 OSX (10.8, Qt 5.2)에서도 작동합니다. – glennr
QWidget.hideEvent
을 사용하고 hideEvent
창이 닫히면 호출되기 때문에 self.isMinimized()
을 확인할 수 있습니다. 예 :
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PyQt4.QtGui import *
class HookMinimize(QWidget):
def hideEvent(self, event):
QWidget.hideEvent(self, event)
if self.isMinimized():
print "Doing background task"
if __name__ == '__main__':
app = QApplication(sys.argv)
window = HookMinimize()
window.resize(300, 400)
window.show()
sys.exit(app.exec_())
유감스럽게도이 방법은 Linux에서는 작동하지 않습니다. 또한 Windows에서 이미 최소화 된 창이 닫히면 백그라운드 작업이 다시 실행됩니다 (원하는 작업이 아닐 수도 있습니다). – ekhumoro
@ekhumoro, 감사합니다, 그것에 대해 몰랐습니다. – reclosedev
@reclosedev - 언급되고 완료되었습니다. 감사합니다 – Stephen
- 1. 버튼 클릭시 실행/실행/트리거 자바 스크립트?
- 2. 브라우저의 트리거 이벤트 뒤로 버튼
- 3. 버튼 클릭시 ViewModel 확인
- 4. GridView에서 버튼 클릭시 클라이언트 측 이벤트 호출
- 5. 버튼 클릭시 두 가지 이벤트 처리
- 6. 버튼 클릭시 WPF 애니메이션 문제
- 7. jquery 버튼 트리거 서버 측 onclick 이벤트
- 8. 버튼 클릭 이벤트가 잘못된 이벤트 처리기를 트리거
- 9. Windows orb (메뉴 버튼) 클릭시 AutoHotkey 스크립트 트리거
- 10. 필터 최소화 이벤트
- 11. 이벤트 관찰자 - 이벤트 트리거
- 12. jquery를 사용하여 트리거 클릭시 iframe로드
- 13. 버튼 클릭시 페이지를 팝업하는 방법은 무엇입니까?
- 14. 버튼 클릭시 테이블보기로드하기
- 15. 버튼 클릭시 ScatterViewItem 제거
- 16. 버튼 클릭시 소리 효과
- 17. 버튼 클릭시 NSArray가 증가합니다
- 18. 버튼 클릭시 이미지 회전
- 19. 버튼 클릭시 임의의 텍스트
- 20. 버튼 클릭시 사운드 효과
- 21. 버튼 클릭시 조각 변경
- 22. 버튼 클릭시 sqlite 삽입
- 23. 버튼 클릭시 언어 변경
- 24. 버튼 클릭시 UIView를로드하는 방법
- 25. 버튼 클릭시 창 닫기
- 26. 버튼 클릭시 textViews 만들기
- 27. 버튼 클릭시 JList로드
- 28. 버튼 클릭시 sql 쿼리
- 29. 버튼 클릭시 배경 변경
- 30. 버튼 클릭시 ImageView 변경
이 모두가 좋은 예입니다, 그러나 아마 내가 필요 더 설명하기. 하위 윈도우 상태가 변경되면 (최소화 또는 최대화, showEvent 또는 hideEvent) 데이터베이스를 업데이트하여 상태를 기록해야합니다. 이 두 가지 옵션은 창을 최소화하는 데는 잘 작동하지만 쇼 이벤트는 윈도우가 만들어지고 데이터베이스에서 읽는 중 발생하므로 showEvent에서 데이터베이스에 대한 쓰기를 트리거 할 때 데이터베이스 잠금을 얻습니다. 최소화/표시 버튼을 클릭하여 이벤트를 트리거하는 방법을 찾는 것보다 더 나은 일련의 이벤트로이를 파악해야 할 수도 있습니다. – Stephen
최소화 및 복원 변경 이벤트 (Windows가 생성 된 이후에만 발생 함)를 모두 잡아 내 응답을 업데이트했습니다. 그러나 이것이 당신이 달성하고자하는 것을 구현하는 올바른 방법이라고 확신하지는 않습니다. – ekhumoro