2017-09-29 3 views
1

위젯에 텍스트를 입력하여 일부 값을 변경하고 싶습니다. QLineEdit 또는 QTextEdit 중 어느 것을 사용해야하는지 잘 모르겠습니다. 일부 문서를 읽었으므로 모두 할 수있는 것 같습니다. 아래에 몇 가지 샘플 코드가 있습니다. 위에서 볼 수 있듯이PyQt4 : QLineEdit/QTextEdit에서 텍스트를 읽고 버튼을 클릭하여 일부 기능에 텍스트 변경을 구현하십시오.

import sys 
import PyQt4 
from PyQt4 import QtGui, QtCore 
from PyQt4.QtGui import * 
from PyQt4.QtCore import * 

class Widget(QWidget): 
    def __init__(self, parent= None): 
     super(Widget, self).__init__(parent) 
     layout = QGridLayout() 

     self.setLayout(layout) 

     btn = QPushButton('Push') 
     layout.addWidget(btn, 0, 0) 

     le = QLineEdit() 
     layout.addWidget(le, 0, 1) 


    def someFunc(self): 
     print() ## should print texts entered in le 


app = QApplication(sys.argv) 
widget = Widget() 
widget.show() 
app.exec_() 

, 나는 "푸시"버튼을 클릭하여 르에 넣어 어떤 텍스트 인쇄 "someFunc"방법을 원한다.

누군가가이 문제를 해결하는 방법을 알고 있다면 pls에게 감사드립니다!

답변

0

버튼의 clicked 신호를 someFunc에 연결하고 le을 기본 창의 속성으로 설정해야합니다 (나중에 액세스 할 수 있도록).

귀하의 Widget 클래스는 그러므로 다음과 같아야합니다

class Widget(QWidget): 
    def __init__(self, parent= None): 
     super(Widget, self).__init__(parent) 
     layout = QGridLayout() 

     self.setLayout(layout) 

     btn = QPushButton('Push') 
     # connect the signal to the slot 
     btn.clicked.connect(self.someFunc) 
     layout.addWidget(btn, 0, 0) 

     # set an attribute 
     self.le = QLineEdit() 
     self.le.textChanged.connect(self.otherFunc) 
     layout.addWidget(self.le, 0, 1) 

    def someFunc(self): 
     # use the attribute to get the text 
     print('button-clicked:', self.le.text()) 

    def otherFunc(self, text): 
     print('text-changed:', text) 
+0

를 그래서 나는 "self.le"뭔가를 입력하면, 그냥 자동으로 일부 텍스트가 입력 신호를 방출? – ryan9025

+0

@ ryan9025. 그에 대한. [textEdited] (https://doc.qt.io/qt-4.8/qlineedit.html#textEdited) 신호와 같은 것을 사용해야합니다. 내 예제에 몇 가지 추가 코드를 추가하여이를 수행하는 방법을 보여 줬습니다. 그들이하는 일을보기 위해 [다른 신호들] (https://doc.qt.io/qt-4.8/qlineedit.html#signals)을 실험 해보는 것이 좋습니다. – ekhumoro

관련 문제