Привет, изучаю 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 дизайн:
Настроил файл .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): ")