如何从Pyside的qlineEdit获取文本?

时间:2012-07-27 05:30:31

标签: python pyqt4 pyside

我正在学习Pyside,我似乎无法将QLineEdit中的文本转换为我自己的方法,以便我可以将其输入到查询等中。我知道它与lineEdit.text()有关,但它似乎不起作用。在文本进入变量之前,是否需要将其与信号关联?

这是我一直在尝试的类型。我需要一个textChanged信号才能让它更新或者什么?我已经尝试添加self.line,但这也没有用,在面向对象编程上有点生疏。

line=QtGui.QLineEdit(self)
myVar = line.text()

一个简短的代码示例会很棒。谢谢!

1 个答案:

答案 0 :(得分:3)

您似乎正在创建对象并在之后使用它。当然,你从text()得到一个空字符串;它不会那样工作。

您应该将QLineEdit添加到GUI,让用户对其执行某些操作,然后使用QLineEdit.text()获取文本。要知道用户何时更改了文本,是的,您应该连接到QLineEdit.textEdited广告位。

以下是一个完整示例,它使用这种机制在修改后立即将所有文本从QLineEdit复制到QLabel

import sys

from PySide.QtCore import *
from PySide.QtGui import *

class MainWindow(QWidget):
    def __init__(self):
        QWidget.__init__(self)

        layout = QVBoxLayout()
        self.setLayout(layout)

        self.line_edit = QLineEdit()
        layout.addWidget(self.line_edit)

        self.label = QLabel()
        layout.addWidget(self.label)

        self.line_edit.textChanged.connect(self.line_edit_text_changed)

        self.show()

    def line_edit_text_changed(self, text):
        self.label.setText(text)

app = QApplication(sys.argv)
mw = MainWindow()
app.exec_()

这个示例显示了如何将自己的功能连接到插槽。但由于QLabel有一个setText广告位,我们可以self.line_edit.textChanged.connect(self.line_edit.setText)而不是定义一个函数。

P.S。你真的应该阅读一些教程;我发现this one非常有用。