我正在学习 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/