Qt Designer에서 만든 양식에서 QPlainTextWidget에 입력 한 키 입력을 읽어야합니다.Python : Qt Designer에서 만든 QPlainTextWidget에서 키 입력 받기
전체 결과 텍스트를 QPlainTextWidget.toPlainText()
으로 읽을 수 있음을 알고 있지만 글자가 입력됨에 따라 글자를 개별적으로 읽어야합니다. (사진 작가를위한 파일 이름 바꾸기 프로그램을 작성 중이며 텍스트 상자에 입력 한 결과 새 파일 이름을 사용자에게 표시하고 싶습니다. 해당 항목을 파일 이름의 기본 이름으로 사용합니다.)
self.txtFilename.keyPressDown.connect(self.DiplayNewFilename)
으로 텍스트 상자에 서브 루틴을 연결하려고했지만 keyPressDown이 슬롯이 아니기 때문에 오류가 발생합니다.
나는 서브 클래 싱이 해결책을 만들 수 있다고 온라인에서 읽었지만 그 방법이나 서브 클래 싱 코드를 전체 코드에 넣을 위치를 모른다. 내 프로그램은 Qt Designer에서 만든 GUI 양식을 사용하는 단일 양식 응용 프로그램입니다. Qt 디자이너가 생성 한 GUI 코드를 편집하는 대신 주요 파이썬 파일에 코딩 솔루션을 추가 할 수있는 유연한 솔루션을 만들고 싶습니다.
현재 코드에는 하나의 클래스 (기본 창용) 만 있습니다. 새로운 서브 클래 싱 코드는 어디에 두어야합니까? -이 기존 클래스 안에 또는 새로운 클래스로? 어떻게 부를까요?
나는 아래의 코드에서 photoOrg_MainWindow.Ui_MainWindow
은 Qt 디자이너가 만든 양식입니다. 우분투 16.04, 파이썬 3 및 Qt 4를 실행하고 있습니다. txtFilename
은 캡처하려는 키 입력이있는 텍스트 위젯입니다.
환호, 그리고 대단히 감사합니다!
TL/DR : Qt Designer에서 만든 텍스트 위젯에서 텍스트 상자 키 스트로크에 액세스 할 수 있습니까?
여기에 지금까지 내 코드의 본질이다 :
class MainWindow(QtGui.QMainWindow, photoOrg_MainWindow.Ui_MainWindow):
def __init__(self):
super(self.__class__, self).__init__()
self.setupUi(self)
self.actionOpen_Files.triggered.connect(self.GetPhotoFileNames)
self.txtFilename.keyPressDown.connect(self.DisplayNewFilename) #this doesn't work
more irrelevant routines and connect bindings code here...
def DisplayNewFilename(self):
Code that processes the keystroke to display it as part of a sample new filename displayed in a QLabel
def main():
app = QtGui.QApplication(sys.argv)
form = MainWindow()
form.show()
app.exec_()
if __name__ == '__main__':
main()
우수의 문서를 참조하십시오 신호하지 않습니다! 매력처럼 일했습니다! 눌려진 문자가 실제로 텍스트 상자에 추가되기 전에'KeyPress'가 발생하기 때문에'KeyPress' 이벤트 대신'KeyRelease' 이벤트를 사용하여 텍스트 상자의 텍스트를 캡처해야했습니다. 대단히 감사합니다! – trinkner
도움이 된 것을 기쁘게 생각합니다. :) – Achayan