2017-02-24 97 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。快速谷歌搜索應該找到您正確的可執行安裝程序,它不再在他們的網站上了。你找不到它我可以發給你。)

希望它的作品,並祝你好運!

編輯: 我只是想到了一個更簡單的方法。應該剛剛說過這個。

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 (lambda:ex.lbl.setText(qle.text()))' – spikespaz

0

有點簡單的答案。對您的代碼進行了一些編輯。它工作正常,併成功運行。

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是無形,因爲它是從你的QMainWindow區。

希望它有助於!

+0

艾哈邁德塔哈,這很完美,非常感謝你,看來我仍然需要做一些關於類,方法和函數的基本範圍的學習。是的,標籤不可見是一個學校男孩的錯誤,我在我正在編寫的程序中使用它,只是沒有完全爲我的測試代碼編寫佈局。 – iFunction

+0

不客氣。接受這個答案,如果你認爲它幫助你:) –

相關問題