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()

您如何使此功能工作?

您可以使用它将文本设置为标签: 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_())

一些简化的答案。对您的代码进行了一些编辑。它可以正常运行,并成功运行。

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 ars convisible 因为它不在您的qmainwindow区域。

希望它有帮助!

最新更新