Skip to main content

A WYSIWYG-texteditor based on pygame for pygame

PyPI GitHub

Introduction & examples

The text editor can be inserted into any existing pygame window. A minimal code example of it being activated within an existing pygame window can be found below.

The code editor comes with line numbers and syntax highlighting for python if enabled:

Example with default configuration:

Usage

The texteditor takes 5 obligatory parameters and 4 optional parameters.

Obligatory parameters
  • offset_X : integer - the offset from the left border of the pygame screen
  • offset_y : integer - the offset from the top border of the pygame screen
  • editor_width : integer - the width of texteditor
  • editor_height : integer - the height of texteditor
  • screen : pygame display surface - on which the texteditor is to be displayed
Optional Parameters with default values
  • display_line_numbers - a boolean enabling showing line numbers

    Default: False

  • style - a String setting the color scheme of editor and syntax highlighting

    Default: 'dark'

  • syntax_highlighting_python - a boolean enabling syntax highlighting for Python code

    Default: False

  • font_size - an integer to set for the font size.

    Default: 16

Setup and configuration

Minimal texteditor setup example
import pygame
from pygame_texteditor import TextEditor

# minimal pygame setup
pygame.init()
screen = pygame.display.set_mode((500, 600))
pygame.display.set_caption("Pygame")
pygame.display.get_surface().fill((200, 200, 200))  # background coloring

# Instantiation & customization of the text editor
TX = TextEditor(
    offset_x=50, offset_y=50, editor_width=500, editor_height=400, screen=pygame.display.get_surface()
)
TX.set_line_numbers(True)
TX.set_syntax_highlighting(True)
TX.set_font_size(18)

# TextEditor in the pygame-loop
while True:
    # INPUT - Mouse + Keyboard
    pygame_events = pygame.event.get()
    pressed_keys = pygame.key.get_pressed()
    mouse_x, mouse_y = pygame.mouse.get_pos()
    mouse_pressed = pygame.mouse.get_pressed()

    # displays editor functionality once per loop
    TX.display_editor(pygame_events, pressed_keys, mouse_x, mouse_y, mouse_pressed)
    pygame.display.flip()  # updates pygame window
Retrieving text from the editor

The editor offers the function get_text_as_string() to retrieve the entire text as a String from the editor. Lines are separated by the new line character \n.

The editor offers the function get_text_as_list() to retrieve the entire text as a list from the editor. Each String-item in the list represents one line from the editor.

Removing text from the editor

The editor offers the function clear_text() to clear the editor of any text.

Inserting text into the editor

Inserting text can be done by using one of the two available functions:

  1. With a list of strings in which each string represents one line, or
  2. With a string which includes linebreak characters which get parsed.
set_text_from_list(["First line", "Second Line.", "Third Line."]
set_text_from_string("First line.\nSecond line.\nThird Line")

Customization

Cursor mode

Cursor mode can either be static or blinking (=default).

TX = TextEditor(...)
TX.set_cursor_mode("static")
TX.set_cursor_mode("blinking")

Key repetition speeds

While a key is being held, multiple key events are being triggered. The delay of the first repetition as well as the interval between all sequential key triggers can be customized by using the function set_key_repetition(delay=300, intervall=30).

From the official documentation:

The delay parameter is the number of milliseconds before the first repeated pygame.KEYDOWN event will be sent. After that, another pygame.KEYDOWN event will be sent every interval milliseconds.

Font Customization

The editor uses a ttf file to set the font for the editor. By default, the Courier monospace font is used.

A custom font can be loaded with the following method, passing an absolute path:

  • set_font_from_ttf("X:\path\to\custom\font.ttf")

DISCLAIMER: As the width of a letter (space) is only calculated once after setting the font_size, any fonts that are not monospace will lead to the editor not working correctly anymore, as it cannot be determined correctly between which letters the user clicked.

Font size

Font size can be customized with the command set_font_size(size) - the parameter is an integer with the default value 16 to be able to reset it.

Line Numbers

Line numbers can be shown on the left side of the editor. Line numbers begin with 0 as is the Pythonian way.

Line numbers can be enabled and disabled with set_line_numbers(Boolean).

Syntax Highlighting

The editor comes with syntax highlighting for Python code. Tokenization is based on the pygment package.

Syntax highlighting can be enabled/disabled with set_syntax_coloring(boolean_value).

The syntax colors being used are also specified in the yml style file.

Color-scheme customization

The editor uses a yml file to set the color-scheme for the editor itself and for the syntax coloring.

Two styles are delivered with the editor, they can be activated respectively by:

  • set_colorscheme("dark")
  • set_colorscheme("bright")

A custom style can be loaded with the following method from a created yml file:

  • set_colorscheme_from_yaml("X:\path\to\custom\filename.yml")

All keys must be present with values. Acceptable values are RGB colors in the following format: (255, 255, 255) or 255, 255, 255.

The following keys are required in the stylename.yml file, syntax colors are only used if syntax highlighting is enabled, but are still required to be included.

Editor colors (source: bright.yml)

  • codingBackgroundColor: (255, 255, 255)
  • codingScrollBarBackgroundColor: (49, 50, 50)
  • lineNumberColor: (255, 255, 255)
  • lineNumberBackgroundColor: (60, 61, 61)
  • textColor: (255, 255, 255)
  • caretColor: (255, 255, 255)

Syntax colors (source: bright.yml)

  • textColor_normal: (0, 255, 255)
  • textColor_comments: (119, 115, 115)
  • textColor_quotes: (227, 215, 115)
  • textColor_operators: (237, 36, 36)
  • textColor_keywords: (237, 36, 36)
  • textColor_function: (50, 150, 36)
  • textColor_builtin: (50, 50, 136)

Metadata

Release files for pygame-texteditor 0.7.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pygame-texteditor 0.7.3
File Size Uploaded
pygame_texteditor-0.7.3.tar.gz 52.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pygame-texteditor 0.7.3
File Interpreter ABI Platform
pygame_texteditor-0.7.3-py3-none-any.whl Python 3 none any Details

Total release size: 108.9 kB

Release files / pygame_texteditor-0.7.3.tar.gz

Download URL pygame_texteditor-0.7.3.tar.gz
Size 52.8 kB
Tags Source
SHA-256 checksum
How to use checksums
d0070417296bd470a96496eaf9a1deb2cd7cc1adce604a63a4404f1b0134401f
BLAKE2b-256 checksum
How to use checksums
4b4430a36cc464a69f2241549f5caf4f92d330c3906f5925b4a8a8447fb2f3e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.4.1 CPython/3.8.16 Windows/10

Release files / pygame_texteditor-0.7.3-py3-none-any.whl

Download URL pygame_texteditor-0.7.3-py3-none-any.whl
Size 56.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4f4336165b28cbb5c7ff75108a47b5d0876c77a9047a53959c21ccd364f9a9d6
BLAKE2b-256 checksum
How to use checksums
8dbd0b4f41fba996c40b74aae031846f1ce036a2480c3ae0f6b6669040e1b44e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.4.1 CPython/3.8.16 Windows/10

Release history Release notifications | RSS feed

This release

0.7.3 This release

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.7

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page