【问题标题】:pyqt4 how to set text from line edit to label on button clickpyqt4如何在按钮单击时将文本从行编辑设置为标签
【发布时间】:2017-02-24 11:52:30
【问题描述】:

我正在尝试设计数据输入表单,当按下确定按钮时将文本输入到行编辑小部件时,该表单将向标签添加文本,但答案完全让我无法理解:

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

请问你是如何让它工作的?

【问题讨论】:

  • self.lbl.setText(self.qle.text()).

标签: python-3.x pyqt4 qlineedit


【解决方案1】:

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

【讨论】:

  • 谢谢你的帮助,我已经使用了下面的答案,但我也会考虑这个选项,谢谢
  • @iFunction 总而言之,我的回应是将其添加到您的主要功能中:ex.btn.clicked.connect(lambda: ex.lbl.setText(qle.text()))
【解决方案2】:

有点简化的答案。对您的代码进行了一些编辑。它工作正常,并且运行成功。

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 区域内。

希望对你有帮助!

【讨论】:

  • Ahmad Taha,太好了,非常感谢你,看来我仍然需要学习一些关于类、方法和函数的基本范围。是的,标签不可见是一个男生错误,我在我正在编写的程序中有它,只是没有完全确定我的测试代码的布局。
  • 不客气。如果您认为它对您有帮助,请接受此答案:)
猜你喜欢
  • 2018-09-19
  • 2012-09-02
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 2012-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多