Building a Text-to-Morse Code Converter with Python and Tkinter

Translating Text into Morse Code with Python and Tkinter: A Step-by-Step Guide

Table of contents

Introduction

In this article, we will explore how to create a simple Text to Morse Code Converter using the Python programming language and the Tkinter library for building a graphical user interface (GUI). Morse code, originally developed for telecommunication, is a method of encoding text characters as sequences of dots and dashes. By the end of this project, you will have a functional application that allows users to input text and receive its Morse code equivalent.

Prerequisites

Before we dive into the code, make sure you have Python installed on your computer. You'll also need the Tkinter library, which is included in Python's standard library.

Setting Up the Project

First, let's import the necessary libraries and define some constants and a dictionary that maps characters to their Morse code representations:

import tkinter as tk

# Constants for colors
GREEN = "#9bdeac"
YELLOW = "#f7f5dd"

# Morse code dictionary
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': '--..',
    '1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....',
    '6': '-....', '7': '--...', '8': '---..', '9': '----.', '0': '-----'
}

We have defined two colors (GREEN and YELLOW) that we will use later for styling our GUI, and a morse_code_dict that maps letters and numbers to their respective Morse code representations.

Creating the GUI

Next, we will create the graphical user interface (GUI) for our Text to Morse Code Converter. We'll use Tkinter for this purpose. The GUI will include a window, labels, an input field, and a button.

# Create the main application window
window = tk.Tk()
window.title("Text To Morse-Code Converter")
window.config(padx=100, pady=50, bg='white')

# Create GUI elements
header = tk.Label(
    text="Text To Morse-Code Converter",
    font=('Arial', 20, "bold"),
    foreground=GREEN,
    background=YELLOW
)
header.grid(column=1, row=0)

text = tk.Label(
    text="Text:",
    font=('Arial', 12, "normal")
)
text.grid(column=0, row=1)

text_input = tk.Entry(window)
text_input.insert(0, "")  # Optional: Set an initial value
text_input.grid(column=1, row=1, padx=10, pady=10)

morse_code = tk.Label(
    text="",
    font=('Arial', 48, "normal")
)
morse_code.grid(column=1, row=2)

start_button = tk.Button(
    text="Convert",
    font=('Arial', 12, "bold"),
    padx=20,
    pady=5,
    command=text_to_morse
)
start_button.grid(column=1, row=3)

Here's a brief description of each element:

  • window: This is the main application window.

  • header: A label displaying the title of the application.

  • text: A label indicating the input field's purpose.

  • text_input: An input field where users can type the text they want to convert.

  • morse_code: A label where the converted Morse code will be displayed.

  • start_button: A button that initiates the conversion process.

Converting Text to Morse Code

Now, let's implement the text_to_morse function, which will convert the user's input text to Morse code. This function will be called when the "Convert" button is pressed.

def text_to_morse():
    user_input = text_input.get()
    morse_code_list = []

    # Convert user input to uppercase for consistency
    user_text = user_input.upper()

    for char in user_text:
        if char == " ":
            morse_code_list.append("   ")
        elif char in morse_code_dict:
            morse_code_list.append(morse_code_dict[char])

    morse_code.config(text=f'Morse Code: {"".join(morse_code_list)}', padx=10, pady=10)

This function retrieves the user's input, converts it to uppercase for consistency, and then iterates through each character. It checks if the character is a space and appends three spaces to represent word spacing in Morse code. If the character exists in the morse_code_dict, it appends its Morse code representation to the morse_code_list. Finally, it updates the morse_code label to display the converted Morse code.

Running the Application

The last step is to start the GUI application by calling window.mainloop(). This function runs the Tkinter event loop, which handles user interactions and keeps the application running until the user closes the window.

# Run
window.mainloop()

Conclusion

In this article, we've built a simple Text to Morse Code Converter using Python and Tkinter. The application allows users to input text, click a button, and receive the corresponding Morse code. This project demonstrates the power of Python's Tkinter library for creating graphical user interfaces and showcases how easy it is to implement a basic text conversion algorithm.

You can further enhance this project by adding features such as sound output for the Morse code or expanding the character set to include punctuation and special characters.