2017-02-24 98 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

不客气。接受这个答案,如果你认为它帮助你:) –

相关问题