pyqt 中怎么限定lineedit的数据类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyqt 中怎么限定lineedit的数据类型相关的知识,希望对你有一定的参考价值。
参考技术A QLineEdit是单行文本输入,一般用于用户名、密码等少量文本交互地方。 QTextEdit用于多行文本,也可以显示html格式文本。 QPlainTextEdit与QTextEdit很像,但它多用于需要与文本进行处理的地方,而QTextEdit多用于显示,可以说,QPlainTextEdit...本回答被提问者采纳Pyqt5 中的 LineEdit
【中文标题】Pyqt5 中的 LineEdit【英文标题】:LineEdit in Pyqt5 【发布时间】:2017-04-05 09:44:02 【问题描述】:我想使用 pyqt5 来修改我的文档。
在界面中输入一些信息(例如,IP ...等)
然后用这些变量替换原来的例子信息
但是输入的值并没有出现在文件中
文件显示“无”
如果设置
ip = self.lineEdit_ip.text()
文件显示''
这是我的代码
import sys, os
import platform
from PyQt5.QtWidgets import *
import ezplan_form
from ezplan_form import Ui_MainWindow
if platform.system() == 'Windows':
ezPath = os.path.join('F:\\','plan')
else:
ezPath = os.path.join('F','plan')
class MyForm(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.setWindowTitle('SetezPlan')
self.SetIP()
def SetIP(self):
ip = str(self.lineEdit_ip.text())
f=open(os.path.join(ezPath,'Server.txt'),'r+')
flist=f.readlines()
flist[0]= ip
f=open(os.path.join(ezPath,'Server.txt'),'w+')
f.writelines(flist)
self.pushButton_ok.clicked.connect(f.close)
if __name__ == "__main__":
app = QApplication(sys.argv)
myform = MyForm()
myform.show()
sys.exit(app.exec_())
如何修改我的代码??
*更新(04/06) @kamik423 结果像图像。不是“6.6.6.6”。
【问题讨论】:
首先(从我看来)你只在窗口打开时调用SetIP()
,而不是在你写东西的时候。其次,一旦按下按钮,我只会写入文件。第三,您可以删除f=open(os.path.join(ezPath,'Server.txt'),'w+')
行,因为该文件已经打开以供写入。
谢谢!当我在界面中写东西时,我该怎么做才能保存修改?
【参考方案1】:
我们可以使用editingFinished
信号,这是在放置文本并按下Enter
或Return
后执行的,即放置所需文本然后按下Enter
或Return
。
def __init__(self):
super().__init__()
self.setupUi(self)
self.setWindowTitle('SetezPlan')
self.SetIP()
self.lineEdit_ip.editingFinished.connect(self.SetIP)
def SetIP(self, event):
ip = str(self.lineEdit_ip.text())
with open(os.path.join(ezPath,'Server.txt'),'r+') as f:
flist=f.readlines()
flist[0]= ip
f.writelines(flist)
f.close()
【讨论】:
感谢您的帮助!它成功了。【参考方案2】:解决方案(未测试,因为我没有程序的其余部分)
现在每次在lineEdit
中输入或删除符号时都会调用SetIP
。它打开文件,写入第一行并再次保存。现在按钮是不必要的(据我所知)
def __init__(self):
super().__init__()
self.setupUi(self)
self.setWindowTitle('SetezPlan')
self.lineEdit_ip.textChanged.connect(self.SetIP)
def SetIP(self, event):
ip = str(self.lineEdit_ip.text())
with open(os.path.join(ezPath,'Server.txt'),'r+') as f:
flist=f.readlines()
flist[0]= ip
f.writelines(flist)
f.close()
【讨论】:
感谢您的帮助!我试过你的代码但失败了。 我改变了一些东西,你能再试一次。你的错误是什么?文件存在吗? 我的问题解决了!我使用self.lineEdit_ip.editingFinished.connect(self.SetIP)
来解决这个问题。感谢您的帮助!
是的,但这只会在您取消选择文本字段后保存,而不是在您输入文本时保存。以上是关于pyqt 中怎么限定lineedit的数据类型的主要内容,如果未能解决你的问题,请参考以下文章
PyQt5快速上手基础篇4-将lineEdit输入框数据同步显示再label和LCD屏上面
文本从 LineEdit1 (Form1) 到 LineEdit2 (Form2)_Python, PyQt