PyQt4:在没有新对话框的情况下将输入保存到变量

时间:2013-06-27 18:36:41

标签: python python-2.7 pyqt pyqt4

我必须说我对PyQt4模块还是一个新手,所以这个问题可能很明显。但是,我花了很多时间试图解决这个特殊的问题并且已经没有想法了。

到目前为止,这是我的代码:

...
self.btn = QtGui.QPushButton('Save Text', self)
self.btn.move(20, 20)
self.le = QtGui.QLineEdit(self)
self.le.move(130, 22)
self.btn.clicked.connect(self.save_text)
...

然后功能:

def save_text(self):
    text, ok = QtGui.QInputDialog.getText(self, 'Input', 'Type text:')
    filename = QtGui.QFileDialog.getSaveFileName(self, 'Save File', '.')
    fname = open(filename, 'w')
    fname.write(self.le.setText(str(text)))
    fname.close()

此代码工作正常,但我正在尝试优化它。我想要做的是将主窗口的输入字段(self.le)中的文本直接保存到文件中。目前,只要按下Save Text按钮,它就会打开一个新对话框,用户输入要保存在新对话框中的文本。基本上,我希望能够将getTextself.le一起使用并将其保存到text变量,但我无法这样做。有没有直接的方法通过按钮点击将文本从self.le存储到text变量?或者直接将其保存到文件中?我正在运行Python 2.7。

2 个答案:

答案 0 :(得分:2)

如果您希望将QlineEdit self.le的文本保存到文件中,您只需要使用此

text = self.le.text()

所以你的save_text函数变成了

def save_text(self):
    text, ok = self.le.text()   //basically access the QlineEdit self.le and use text() to access its text
    filename = QtGui.QFileDialog.getSaveFileName(self, 'Save File', '.')
    fname = open(filename, 'w')
    fname.write(self.le.setText(str(text)))
    fname.close()

答案 1 :(得分:0)

好的,我找到了一种更简单的方法来完成我一直想做的事情。这是代码:

...
self.btn = QtGui.QPushButton('Save Text', self)
self.btn.move(20, 20)
self.btn.clicked.connect(self.save_text)

self.te = QtGui.QTextEdit(self)
self.te.resize(200,100)
self.te.move(130,22)
...

然后功能:

def save_text(self):
    text = self.te.toPlainText()
    filename = QtGui.QFileDialog.getSaveFileName(self, 'Save File', '.')
    fname = open(filename, 'w')
    fname.write(str(text))
    fname.close()