1

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

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

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

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

4

1 回答 1

3

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

您应该将 添加QLineEdit到 GUI,让用户对其进行操作,然后使用QLineEdit.text(). 要知道用户何时更改了文本,是的,您应该连接到插槽。QLineEdit.textEdited

这是一个完整的示例,它使用这种机制在修改后立即将所有文本从 a 复制QLineEdit到 a 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_()

这个示例展示了如何将自己的函数连接到插槽。但是由于 aQLabel有一个setText槽,我们可以只做self.line_edit.textChanged.connect(self.line_edit.setText)而不定义一个函数。

PS你真的应该阅读一些教程;我发现这个非常有用。

于 2012-07-27T05:36:48.413 回答