Untitled
unknown
plain_text
a month ago
3.7 kB
3
Indexable
Never
import sys import csv from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QLabel, QFileDialog, QTextEdit from PyQt5.QtCore import QUrl from PyQt5.QtGui import QDesktopServices import os class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # Thiết lập cửa sổ chính self.setWindowTitle('CSV File Processor') self.setGeometry(100, 100, 500, 400) # Layout để sắp xếp các thành phần giao diện layout = QVBoxLayout() # Nhãn hiển thị self.label = QLabel('Chọn tệp để xử lý', self) layout.addWidget(self.label) # Nút chọn file self.btn_select_file = QPushButton('Chọn file', self) self.btn_select_file.clicked.connect(self.open_file_dialog) layout.addWidget(self.btn_select_file) # Nút để mở file CSV self.btn_open_csv = QPushButton('Mở file CSV', self) self.btn_open_csv.clicked.connect(self.open_csv_file) self.btn_open_csv.setDisabled(True) # Vô hiệu hóa nút cho đến khi có file CSV layout.addWidget(self.btn_open_csv) # Nút mở thư mục chứa file CSV self.btn_open_folder = QPushButton('Mở thư mục chứa CSV', self) self.btn_open_folder.clicked.connect(self.open_csv_folder) self.btn_open_folder.setDisabled(True) layout.addWidget(self.btn_open_folder) # TextEdit để hiển thị nội dung CSV self.text_edit = QTextEdit(self) self.text_edit.setReadOnly(True) layout.addWidget(self.text_edit) self.setLayout(layout) def open_file_dialog(self): # Mở hộp thoại để chọn file options = QFileDialog.Options() file_path, _ = QFileDialog.getOpenFileName(self, "Chọn tệp để xử lý", "", "All Files (*);;Text Files (*.txt)", options=options) if file_path: self.label.setText(f'Đã chọn: {file_path}') # Xử lý file (ví dụ đọc file, và lưu ra CSV) self.process_file(file_path) def process_file(self, file_path): # Ví dụ: Đọc nội dung file và lưu vào CSV csv_file = 'output.csv' with open(file_path, 'r') as infile, open(csv_file, 'w', newline='') as outfile: writer = csv.writer(outfile) for line in infile: # Giả định mỗi dòng trong file input là một hàng trong CSV writer.writerow([line.strip()]) # Cập nhật nút mở file CSV và mở thư mục self.btn_open_csv.setDisabled(False) self.btn_open_folder.setDisabled(False) self.label.setText(f'Đã xử lý và xuất ra: {csv_file}') self.csv_file_path = csv_file # Lưu lại đường dẫn file CSV def open_csv_file(self): # Hiển thị nội dung file CSV trong QTextEdit if os.path.exists(self.csv_file_path): with open(self.csv_file_path, 'r') as file: content = file.read() self.text_edit.setPlainText(content) def open_csv_folder(self): # Mở thư mục chứa file CSV if os.path.exists(self.csv_file_path): folder_path = os.path.dirname(os.path.abspath(self.csv_file_path)) QDesktopServices.openUrl(QUrl.fromLocalFile(folder_path)) # Khởi tạo và chạy ứng dụng app = QApplication(sys.argv) window = MyApp() window.show() sys.exit(app.exec_())
Leave a Comment