2017-02-24 3 views
1

ok 버튼을 누를 때 텍스트가 행 편집 위젯에 입력 될 때 텍스트에 레이블을 추가하도록 데이터 입력 양식을 디자인하려고합니다. 대답은 나를 완전히 빠져 나옵니다.pyqt4 라인 편집에서 버튼 클릭시 레이블로 텍스트를 설정하는 방법

#!/usr/bin/python3 
#-*- coding: utf-8 -*- 

""" 
Set label text from line edit with 
ok click 
""" 

import sys 
from PyQt4 import QtGui, QtCore 


class Example(QtGui.QMainWindow): 

    def __init__(self): 
     super(Example, self).__init__() 

     self.initUI() 

    def initUI(self): 

     self.qle = QtGui.QLineEdit(self) 
     self.qle.move(100, 0) 
     sometext = self.qle.text 

     self.lbl = QtGui.QLabel(self) 
     self.lbl.move(100, 100) 
     btn = QtGui.QPushButton("Ok", self) 
     btn.move(30, 100) 

     btn.clicked.connect(self.buttonClicked) 

     self.setGeometry(200, 200, 300, 200) 
     self.show 

    def buttonClicked(self, sometext): 
     sender = self.sender() 
     self.lbl.setText(sometext) 

def main(): 

    app = QtGui.QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 

어떻게 작동합니까?

+0

'self.lbl.setText (self.qle.text())'. – ekhumoro

답변

0

당신은 라벨에 텍스트를 설정하려면이 옵션을 사용할 수 있습니다QLabel.setText("string text")

과 결합 :QPushButton.clicked.connect(lambda: func())

그리고 라인 편집의 텍스트를 얻을 :QLineEdit.text()

그래서 전체를 코드는 다음과 같이 표시되어야합니다.

#!/usr/bin/python3 
#-*- coding: utf-8 -*- 

""" 
Set label text from line edit with 
ok click 
""" 

import sys 
from PyQt4 import QtGui, QtCore 


class Example(QtGui.QMainWindow): 

    def __init__(self): 
     super(Example, self).__init__() 

     self.initUI() 

    def initUI(self): 

     self.qle = QtGui.QLineEdit(self) 
     self.qle.move(100, 0) 
     sometext = self.qle.text 

     self.lbl = QtGui.QLabel(self) 
     self.lbl.move(100, 100) 
     btn = QtGui.QPushButton("Ok", self) 
     btn.move(30, 100) 

     self.setGeometry(200, 200, 300, 200) 
     self.show 

if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    ex = Example() 

    def setLabelText(): 
     text = qle.text() 
     ex.lbl.setText(text) 

    ex.btn.clicked.connect(lambda: setLabelText()) 

    sys.exit(app.exec_()) 

이 코드는 실제로 테스트 할 수 없지만 으로 잘 동작해야합니다. 문제가 있으면 알려 주시고, 우리에게 추적을주십시오.

또한 PyQt5.6으로 이전하는 것이 좋습니다 (약간 오래된 최신이지만 QtDesigner가 내장되어 있습니다. 빠른 Google 검색을 통해 올바른 실행 설치 프로그램을 찾을 수 있습니다. 더 이상 웹 사이트에 있지 않습니다.) 당신은 그것을 찾을 수 없습니다. 나는 당신에게 그것을 보낼 수 있습니다.)

희망, 그리고 운이 좋겠어!

편집 : 나는 더 간단한 방법을 생각했습니다. 방금 이렇게 말 했어야했는데.

if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    ex = Example() 

    ex.btn.clicked.connect(lambda: ex.lbl.setText(qle.text())) 

    sys.exit(app.exec_()) 
+0

도움을 주셔서 감사합니다. 아래 답변을 사용했지만이 옵션도 살펴 보겠습니다. – iFunction

+0

@iFunction 요약하면 내 대답은 기본 기능에 추가하는 것이 었습니다 : 'ex.btn.clicked.connect Ahmad Taha, 완벽하게 고맙습니다. 클래스, 메소드 및 함수의 기본 범위에 관해서도 여전히 배워야 할 필요가있는 것처럼 보입니다. (lambda : ex.lbl.setText (qle.text())) ' – spikespaz

0

간단한 대답입니다. 코드를 수정 한 적이 있습니까? 그것은 잘 작동하고 성공적으로 실행됩니다. 그것은 당신의 QMainWindow 지역에서 이었기 때문에

import sys 
from PyQt4 import QtGui, QtCore 
class Example(QtGui.QMainWindow): 
    def __init__(self): 
     super(Example, self).__init__() 
     self.initUI() 
    def initUI(self): 
     self.qle = QtGui.QLineEdit(self) 
     self.qle.move(10, 10) 

     self.lbl = QtGui.QLabel(self) 
     self.lbl.setGeometry(10, 55,200,20) 
     self.lbl.setText("Type Something and Press Ok!") 

     btn = QtGui.QPushButton("Ok", self) 
     btn.move(10, 100) 
     btn.clicked.connect(self.buttonClicked) 

     self.setGeometry(200, 200, 300, 200) 
     self.show 

    def buttonClicked(self): 
     sender = self.sender() 
     self.lbl.setText(self.qle.text()) 
def main(): 
    app = QtGui.QApplication(sys.argv) 
    ex = Example() 
    ex.show() 
    sys.exit(app.exec_()) 
if __name__ == '__main__': 
    main() 

은 또한 당신은 QLabel이 보이지 않는이었다.

희망 하시겠습니까!

+0

네, 보이지 않는 레이블은 학교 소년 오류였습니다. 필자가 작성한 프로그램에서 가지고 있는데, 여기에있는 테스트 코드의 레이아웃을 제대로 연구하지 못했습니다. – iFunction

+0

반갑습니다. 그것이 당신을 도왔다고 생각한다면이 대답을 수락하십시오 :) –

관련 문제