我必须说我对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
按钮,它就会打开一个新对话框,用户输入要保存在新对话框中的文本。基本上,我希望能够将getText
与self.le
一起使用并将其保存到text
变量,但我无法这样做。有没有直接的方法通过按钮点击将文本从self.le
存储到text
变量?或者直接将其保存到文件中?我正在运行Python 2.7。
答案 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()