pyqt4如何在按钮单击时将文本从行编辑设置为标签

时间:2017-02-24 11:52:30

标签: python-3.x pyqt4 qlineedit

我正在尝试设计数据输入表单,当按下确定按钮时将文本输入到行编辑窗口小部件时将文本添加到标签,但答案完全是我不知道:

#!/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()

你如何让这个工作好吗?

2 个答案:

答案 0 :(得分: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_())

答案 1 :(得分: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区域。

希望它有帮助!