Python

Домашнее задание по программированию, помогите срочно!

Реализовать приложение , где пользователь вводит свое имя и фамилию в тестовые поля, указывает дату рождения с помощью QDateEdit. При нажатии на кнопку эти данные должны сохраниться в текстовом файле.
[Сгенерировано нейросетью]

Для решения данной задачи необходимо использовать библиотеку PyQt для создания графического интерфейса приложения и модуль datetime для работы с датами. Также, для записи данных в файл необходимо использовать модуль os.

Вот пример решения данной задачи:
 import os 
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QDateEdit, QPushButton, QHBoxLayout, QVBoxLayout
from datetime import datetime

class MainWindow(QWidget):
def __init__(self):
super().__init__()

self.initUI()

def initUI(self):
# Создание виджетов для ввода данных
self.name_label = QLabel('Имя:')
self.name_edit = QLineEdit()

self.surname_label = QLabel('Фамилия:')
self.surname_edit = QLineEdit()

self.birthday_label = QLabel('Дата рождения:')
self.birthday_edit = QDateEdit()

# Создание кнопки сохранения данных
self.save_button = QPushButton('Сохранить')
self.save_button.clicked.connect(self.save_data)

# Создание горизонтальных блоков для группировки виджетов
name_layout = QHBoxLayout()
name_layout.addWidget(self.name_label)
name_layout.addWidget(self.name_edit)

surname_layout = QHBoxLayout()
surname_layout.addWidget(self.surname_label)
surname_layout.addWidget(self.surname_edit)

birthday_layout = QHBoxLayout()
birthday_layout.addWidget(self.birthday_label)
birthday_layout.addWidget(self.birthday_edit)

# Создание вертикального блока для группировки горизонтальных блоков и кнопки
main_layout = QVBoxLayout()
main_layout.addLayout(name_layout)
main_layout.addLayout(surname_layout)
main_layout.addLayout(birthday_layout)
main_layout.addWidget(self.save_button)

self.setLayout(main_layout)
self.setWindowTitle('Моё приложение')

def save_data(self):
# Получение данных из виджетов
name = self.name_edit.text()
surname = self.surname_edit.text()
birthday = self.birthday_edit.date().toPyDate()

# Форматирование даты в строку
formatted_birthday = datetime.strftime(birthday, '%d.%m.%Y')

# Создание строки для записи в файл
data_str = f'{surname} {name}, {formatted_birthday}\n'

# Получение пути к файлу
current_dir = os.path.dirname(os.path.abspath(__file__))
file_path = os.path.join(current_dir, 'data.txt')

# Запись данных в файл
with open(file_path, 'a') as f:
f.write(data_str)

# Очистка полей ввода
self.name_edit.clear()
self.surname_edit.clear()
self.birthday_edit.setDate(datetime.today().date())

if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
Артем Цветков
Артем Цветков
3 116
Лучший ответ
Так прокатит?


from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QDateEdit, QPushButton
import sys

class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'Сохранение данных в текстовом файле'
self.left = 10
self.top = 10
self.width = 400
self.height = 300
self.initUI()

def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top , self.width, self.height)

name_label = QLabel('Имя:', self)
name_label.move(20, 20)

surname_label = QLabel('Фамилия:', self)
surname_label.move(20, 60)

date_label = QLabel('Дата рождения:', self)
date_label.move(20, 100)

name_input = QLineEdit(self)
name_input.move(100, 20)

surname_input = QLineEdit(self)
surname_input.move(100, 60)

date_input = QDateEdit(self)
date_input.move(120, 100)

save_button = QPushButton('Сохранить', self)
save_button.move(150, 140)
save_button.clicked.connect(lambda: save_data(name_input.text(), surname_input.text(), date_input.date()))

def save_data(name: str, surname: str, date: QDate):
with open('data.txt', 'w') as f:
f.write(f'Имя: {name}\n')
f.write(f'Фамилия: {surname}\n')
f.write(f'Дата рождения: {date.toString()}')

if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
ex.show()
sys.exit(app.exec_())
Скинь свой тг я помогу