python - 如何从 Pyside 中的 lineEdit 获取文本?

标签 python pyqt4 pyside

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

这就是我一直在尝试的事情。我需要一个 textChanged 信号来更新它还是什么?我尝试添加 self.line ,但这也不起作用,对面向对象编程有点生疏。

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

如果有一个简短的代码示例就太好了。谢谢!

最佳答案

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

您应该添加 QLineEdit到 GUI,让用户用它做一些事情,然后使用 QLineEdit.text() 获取文本。要知道用户究竟何时更改了文本,是的,您应该连接到 QLineEdit.<a href="http://doc.qt-project.org/qlineedit#textEdited" rel="noreferrer noopener nofollow">textEdited</a>插槽。

这是一个完整的示例,它使用这种机制来复制 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)并且不定义函数。

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

关于python - 如何从 Pyside 中的 lineEdit 获取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11681984/

相关文章:

python - 选择按钮时如何更改按钮颜色以及我只想使用pyqt4选择一个按钮的每个布局?

python - 具有透明背景的 Qt 小部件

python - 我应该如何更改我的 SQLAlchemy 查询?

python for 循环无法正常工作

python - 在 python View 中检测移动浏览器(不仅仅是 iPhone)

python - 如何让PyQt App放弃窗口焦点?

python - 带有自定义标题栏的可拖动无框 PyQt4 窗口

python - 从图中选择点 matplotlib

multithreading - 在计算时保持GIF动画运行

python - QStyledItemDelegate (PySide/PyQt/Qt) 中 createEditor 的父级是什么?