Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

import tkinter as tk

from tkinter import ttk

from tkinter import messagebox

# Dictionary chứa mã Morse và tương ứng với chữ cái

morse_code_dict = {

'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.', 'H': '....',

'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.',

'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',

'Y': '-.--', 'Z': '--..',

'0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....', '6': '-....',

'7': '--...', '8': '---..', '9': '----.',

'.': '.-.-.-', ',': '--..--', '?': '..--..', "'": '.----.', '!': '-.-.--', '/': '-..-.', '(': '-.--.',

')': '-.--.-', '&': '.-...', ':': '---...', ';': '-.-.-.', '=': '-...-', '+': '.-.-.', '-': '-....-',

'_': '..--.-', '"': '.-..-.', '$': '...-..-', '@': '.--.-.'

# Dictionary chứa chữ cái và tương ứng với mã Morse

reverse_morse_code_dict = {value: key for key, value in morse_code_dict.items()}

# Lịch sử chuyển đổi

conversion_history = []

def text_to_morse(text):

morse_code = ''

for char in text.upper():

if char in morse_code_dict:

morse_code += morse_code_dict[char] + ' '

elif char == ' ':


morse_code += '/ '

return morse_code.strip()

def morse_to_text(morse_code):

text = ''

morse_words = morse_code.split('/')

for morse_word in morse_words:

morse_chars = morse_word.strip().split(' ')

for morse_char in morse_chars:

if morse_char in reverse_morse_code_dict:

text += reverse_morse_code_dict[morse_char]

text += ' '

return text.strip()

def convert_text():

input_text = text_entry.get("1.0", "end-1c")

morse_code = text_to_morse(input_text)

output_text.delete("1.0", "end")

output_text.insert("1.0", morse_code)

conversion_history.append((input_text, morse_code))

def convert_morse():

input_morse = morse_entry.get("1.0", "end-1c")

text = morse_to_text(input_morse)

output_text.delete("1.0", "end")

output_text.insert("1.0", text)

conversion_history.append((text, input_morse))
def clear_history():

global conversion_history

conversion_history = []

messagebox.showinfo("Lịch sử đã xóa", "Lịch sử chuyển đổi đã được xóa thành công.")

def show_history():

history_window = tk.Toplevel(root)

history_window.title("Lịch sử Chuyển đổi")

history_text = tk.Text(history_window, height=20, width=80)

history_text.pack(padx=10, pady=10)

for item in conversion_history:

history_text.insert(tk.END, f"Văn bản: {item[0]}\nMã Morse: {item[1]}\n\n")

# Tạo cửa sổ

root = tk.Tk()

root.title("Morse Converter")

# Thiết lập phong cách

style = ttk.Style()

style.theme_use("clam")

# Thiết lập màu nền cho cửa sổ

root.configure(bg="#F0F0F0")
# Tạo label và entry cho chuyển đổi văn bản sang Mã Morse

text_label = ttk.Label(root, text="Nhập văn bản:", background="#F0F0F0")

text_label.grid(row=0, column=0, padx=5, pady=5, sticky="w")

text_entry = tk.Text(root, height=5, width=50)

text_entry.grid(row=1, column=0, padx=5, pady=5)

text_button = ttk.Button(root, text="Chuyển đổi", command=convert_text)

text_button.grid(row=2, column=0, padx=5, pady=5)

# Tạo label và entry cho chuyển đổi Mã Morse sang văn bản

morse_label = ttk.Label(root, text="Nhập Mã Morse:", background="#F0F0F0")

morse_label.grid(row=0, column=1, padx=5, pady=5, sticky="w")

morse_entry = tk.Text(root, height=5, width=50)

morse_entry.grid(row=1, column=1, padx=5, pady=5)

morse_button = ttk.Button(root, text="Chuyển đổi", command=convert_morse)

morse_button.grid(row=2, column=1, padx=5, pady=5)

# Tạo label cho hiển thị kết quả

output_label = ttk.Label(root, text="Kết quả:", background="#F0F0F0")

output_label.grid(row=3, column=0, columnspan=2, padx=5, pady=5, sticky="w")

output_text = tk.Text(root, height=5, width=100)

output_text.grid(row=4, column=0, columnspan=2, padx=5, pady=5)

# Tạo nút để xóa lịch sử chuyển đổi

clear_button = ttk.Button(root, text="Xóa Lịch sử", command=clear_history)

clear_button.grid(row=5, column=0, columnspan=2, padx=5, pady=5)

# Tạo nút để xem lịch sử chuyển đổi

show_history_button = ttk.Button(root, text="Xem Lịch sử", command=show_history)

show_history_button.grid(row=6, column=0, columnspan=2, padx=5, pady=5)


# Chạy ứng dụng

root.mainloop()

You might also like