Untitled
unknown
plain_text
a year ago
3.7 kB
23
Indexable
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_())
Editor is loading...
Leave a Comment