@David138

Как в поле lineEdit добавить текст и внести изменения в файл?

Привет, изучаю pyqt и столкнулся с такой интересной задачей, что надо чтобы пользователь внес данные в программу, и чтоб все это записалось в файл. Я подготовил такую программу, и она работает как надо, но работает это в командной строке. Вот такой код получился:
def replData(ip1, ip2, sName, sNumb, tNumb):
    # список ключей, которые нужно будет заменить в файле template
    keys=['_ip1_', '_ip2_', '_sName_', '_sNumb_', '_tNumb_']
    #print(keys) 
    #print(keys[2])
    #Создаем список значений, на которые нужно будет заменить
    values=[]
    values.append(ip1)
    values.append(ip2)
    values.append(sName)
    values.append(sNumb)
    values.append(tNumb)
    #print(values)
    #print(values[2])
    #Создаем словарь. в качестве ключей (keys) это будут список значений, в 
        #котором надо будет заменить в файле template, а в качестве значений 
        #(values) - список значений, на которые нужно будет заменить
    dictionary={}
    for i in range(len(keys)):
        dictionary[keys[i]] = values[i]
        search_text = dictionary[keys[i]]
        replace_text = keys[i]
        #print(search_text)
        #print(replace_text)
    #Считываем файл template, и меняем значения
    with open(r'template.txt', 'r') as oFile:
        rFile = oFile.read()
        for key, value in dictionary.items():
            rFile = rFile.replace(key, str(value))
    #print(rFile)    
    #Запишем изменения в файл output
    with open(r'output.txt', 'a') as wFile:
        wFile.write('\n')
        wFile.write('\n')
        wFile.write('\n')
        wFile.write(rFile)    
repeat="y"
while repeat == "y":
    #ip1, ip2, sName, sNumb, tNumb = 1111, 2222, 3333, 4444, 5555
    ip1, ip2, sName, sNumb, tNumb = input("Enter the IP address1: "), input("Enter the IP address2: "), input("Enter the station name: "), input("Enter the station number: "), input("Enter the transmitter number: ")    
    replData(ip1, ip2, sName, sNumb, tNumb)
    #Если нужно повторить:
    repeat = input("Do you want to continue? (y/n): ")
    if repeat == "n":
        break
    while (repeat!="y" and repeat!="n"):
        repeat = input("Please enter the correct answer (y/n): ")

а я теперь хочу в графическом интерфейсе это сделать. Я подготовил в qt desinger дизайн:
637a3664c1981420199385.png
Настроил файл .py, но не знаю как в поле lineEdit добавить текст и внести изменения в файл? Какие методы тут нужны? вот такой файл на данный момент у меня получился:
from PyQt5 import QtWidgets, QtCore
from design import Ui_MainWindow
import sys
class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        #Здесь мы вносим изменения
        self.ui.lineEdit.setReadOnly(True)
app = QtWidgets.QApplication([])
application = mywindow()
application.show() 
sys.exit(app.exec())

def replData(ip1, ip2, sName, sNumb, tNumb):
    # список ключей, которые нужно будет заменить в файле template
    keys=['_ip1_', '_ip2_', '_sName_', '_sNumb_', '_tNumb_']
    #print(keys) 
    #print(keys[2])
    #Создаем список значений, на которые нужно будет заменить
    values=[]
    values.append(ip1)
    values.append(ip2)
    values.append(sName)
    values.append(sNumb)
    values.append(tNumb)
    #print(values)
    #print(values[2])
    #Создаем словарь. в качестве ключей (keys) это будут список значений, в 
        #котором надо будет заменить в файле template, а в качестве значений 
        #(values) - список значений, на которые нужно будет заменить
    dictionary={}
    for i in range(len(keys)):
        dictionary[keys[i]] = values[i]
        search_text = dictionary[keys[i]]
        replace_text = keys[i]
        #print(search_text)
        #print(replace_text)
    #Считываем файл template, и меняем значения
    with open(r'template.txt', 'r') as oFile:
        rFile = oFile.read()
        for key, value in dictionary.items():
            rFile = rFile.replace(key, str(value))
    #print(rFile)    
    #Запишем изменения в файл output
    with open(r'output.txt', 'a') as wFile:
        wFile.write('\n')
        wFile.write('\n')
        wFile.write('\n')
        wFile.write(rFile)    
repeat="y"
while repeat == "y":
    #ip1, ip2, sName, sNumb, tNumb = 1111, 2222, 3333, 4444, 5555
    ip1, ip2, sName, sNumb, tNumb = input("Enter the IP address1: "), input("Enter the IP address2: "), input("Enter the station name: "), input("Enter the station number: "), input("Enter the transmitter number: ")    
    replData(ip1, ip2, sName, sNumb, tNumb)
    #Если нужно повторить:
    repeat = input("Do you want to continue? (y/n): ")
    if repeat == "n":
        break
    while (repeat!="y" and repeat!="n"):
        repeat = input("Please enter the correct answer (y/n): ")
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Develper
Вывести текст если поле пустое:

line = QLineEdit()
line.setPlaceholderText('Текст')


Взять текст из поля:

line.text()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы