A WYSIWYG-texteditor based on pygame.
Project description
A WYSIWYG-texteditor based on pygame for pygame
Usage
The text editor can be inserted into any existing pygame window. A minimal example of it being activated within an existing pygame window can be found below.
The texteditor takes 5 obligatory parameters and 3 optional parameters.
Obligatory parameters
offset_X
: integer - the offset from the left border of the pygame screenoffset_y
: integer - the offset from the top border of the pygame screentextAreaWidth
: integer - the width of texteditortextAreaHeight
: integer - the height of texteditorscreen
: pygame display surface - on which the texteditor is to be displayed
Optional Parameters with default values
line_numbers_flag
- a boolean enabling showing line numbersDefault:
False
style
- a String setting the color scheme of editor and syntax highlightingDefault:
'dark'
syntax_highlighting_flag
- a boolean enabling syntax highlighting for Python codeDefault:
False
Setup
Minimal pygame setup
import pygame
from pygame_texteditor import TextEditor
pygame.init()
screenHeight = 600
screenWidth = 900
screen = pygame.display.set_mode((screenWidth, screenHeight))
pygame.display.set_caption("Pygame")
pygame.display.get_surface().fill((200, 200, 200)) # background coloring
Minimal texteditor setup
# parameters
screen = pygame.display.get_surface() # get existing pygame window/screen
offset_X = 50 # offset from the left border of the pygame window
offset_Y = 50 # offset from the top border of the pygame window
textAreaHeight = 500
textAreaWidth = 800
# Instantiation
TX = TextEditor(offset_X, offset_Y, textAreaWidth, textAreaHeight, screen)
TX.set_line_numbers(True) # optional
TX.set_syntax_highlighting(True) # optional
while True: # pygame-loop
# capture input
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()
# display editor functionality once per loop
TX.display_editor(pygame_events, pressed_keys, mouse_x, mouse_y, mouse_pressed)
# update pygame window
pygame.display.flip()
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:
- With a list of strings in which each string represents one line, or
- 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
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 intervall 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 size
Font size can be customized with the command set_font_size(size)
- the parameter is an integer
with the default value 12
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
codingBackgroundColor
codingScrollBarBackgroundColor
lineNumberColor
lineNumberBackgroundColor
textColor
Syntax colors
textColor_normal
textColor_comments
textColor_quotes
textColor_operators
textColor_keywords
textColor_function
textColor_builtin
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pygame-texteditor-0.6.6.tar.gz
.
File metadata
- Download URL: pygame-texteditor-0.6.6.tar.gz
- Upload date:
- Size: 51.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2cb79279120d945518c26d19c39250a6269af94cc0d6679d99c6782a54e344f2 |
|
MD5 | 6f9484abe9a33c1068baf0d80d58f465 |
|
BLAKE2b-256 | f6afb8e7142c2305f9095bf028363b77896931c9c5e632d6e88e9cc24dd6d714 |
File details
Details for the file pygame_texteditor-0.6.6-py3-none-any.whl
.
File metadata
- Download URL: pygame_texteditor-0.6.6-py3-none-any.whl
- Upload date:
- Size: 54.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5be56952e9da5203b29779c46d8e385046d13258f93a61ea7892636865ec17bb |
|
MD5 | e8aa9ec2f4a4cb609dd2412e93b27eba |
|
BLAKE2b-256 | bbe2f2d5dc5ce62879013bd4cb08b1e26b9aa3abc3944a827a2cf2f8590cb48c |