PySide (PyQt)로 .ui에서 만든 위젯에 이벤트 추가
소개
타이틀대로 PySide에서 .ui에서 만든 QLineEdit에 이벤트를 넣고 싶었는데 class에 의존하는 쓰기가 많았기 때문에 widget에 직접 추가하는 방법이 없는지 찾아 보았습니다.
방법
eventFilter 함수를 구현한 클래스를 위젯의 installEventFilter에 인수로서 건네주는 것으로 이벤트를 감시해 줍니다.
파이썬
import os
import sys
from PySide import QtCore, QtGui
from PySide.QtUiTools import QUiLoader
from maya.app.general.mayaMixin import MayaQWidgetBaseMixin
CURRENT_PATH = os.getenv("HOMEDRIVE") + os.getenv("HOMEPATH") + "\\Desktop"
class GUI(MayaQWidgetBaseMixin, QtGui.QMainWindow):
def __init__(self, parent=None):
super(GUI, self).__init__(parent)
loader = QUiLoader()
uiFilePath = os.path.join(CURRENT_PATH, 'main.ui')
self.UI = loader.load(uiFilePath)
self.setCentralWidget(self.UI)
self._filter = Filter()
# eventFilterをwidgetに突っ込む
self.UI.line.installEventFilter(self._filter)
class Filter(QtCore.QObject):
def eventFilter(self, widget, event):
if event.type() == QtCore.QEvent.FocusOut:
print 'focus out'
return False
def main():
app = QtGui.QApplication.instance()
ui = GUI()
ui.show()
if __name__ == '__main__':
main()
동작 확인
포커스를 옮기는 것으로 이벤트를 무사히 취득할 수 있었습니다.
참고원
파이썬 - How to connect QLineEdit focusOutEvent - Stack Overflow
h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 15066913 / 호 w - 콘 ct q q ぃ 네 ぢ t
Reference
이 문제에 관하여(PySide (PyQt)로 .ui에서 만든 위젯에 이벤트 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/toriiico/items/402d454e1aa73f2629af텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)