我正在学习Pyside,我似乎无法将QLineEdit中的文本转换为我自己的方法,以便我可以将其输入到查询等中。我知道它与lineEdit.text()有关,但它似乎不起作用。在文本进入变量之前,是否需要将其与信号关联?
这是我一直在尝试的类型。我需要一个textChanged信号才能让它更新或者什么?我已经尝试添加self.line,但这也没有用,在面向对象编程上有点生疏。
line=QtGui.QLineEdit(self)
myVar = line.text()
一个简短的代码示例会很棒。谢谢!
答案 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非常有用。