Skip to main content

"A TC Graphics style like Graphics Library"

Project description

A Borland Graphics Interface like Grahics library for python

Borland Graphics Interface, also known as Turbo C Graphics, is an easy-to-use graphics library bundled with Turbo C/Turbo C++/Borland C++.

Because it is easy to learn and use, it is very good for using for kids and beginners to learn basic programming , computer graphics.

https://badge.fury.io/py/easygraphics.png https://pypip.in/d/easygraphics/badge.png

Sample program

The following code shows a moving ellipse.

from easygraphics import *

def mainloop():
    x = 0
    set_color(Color.BLUE)
    set_fill_color(Color.GREEN)

    while is_run():
        x = (x + 1) % 440
        if delay_jfps(60):
            clear_device()
            draw_ellipse(x + 100, 200, 100, 100)

def main():
    init_graph(640, 480)
    set_render_mode(RenderMode.RENDER_MANUAL)
    mainloop()
    close_graph()

easy_run(main)

Special Thanks

Some code is taken from easygui_qt and qtutils, thanks a lot!

History

2.0.1.1
  • fix: bug in image.draw_arc

  • remove: flood_fill

2.0.0-alpha2

  • optimize: polygon drawing functions

  • change: we don’t reset pen/brush for each draw_* methods

  • add: circle drawing methods to Image

  • add some comments

  • add: KeyMessage now have type property, to distinguish key release and key press message

2.0.0-alpha1

  • turn on anti-alias by default

  • remove floodfill() method (slow, and not working with shapes drawn with anti-aliasing. we shouldn’t use it)

  • remove background mask (it’s seldom used and will slow down the drawing speed)

  • set image’s default background color to TRANSPARENT

1.0.20

  • add: Image.copy() method

  • change: draw_image() add width/height parameters ( can copy image with scale)

  • change: only create direct image buffer view when using floodfill()

1.0.19

  • add: Image.scaled() method

1.0.18

  • add: put_image()

  • change: capture_screen()’s 3rd and 4th parameter to width and height

  • add: more FillStyle consts

1.0.17

  • fix: dialogs dosen’t work in normal pyqt program

  • change: contains_control() -> contains_ctrl()

  • add: load_image() throw value error if the image file is not exist

  • fix: get_mouse_msg() / get_char() / get_key() not quit correctly when the graphics window is closed

1.0.16

  • add: set_antialiasing()

  • add: contains_control()/contains_alt()/contains_shit()/contains_meta()

  • change: get_mouse_message() now return a MouseMessage object

  • change: get_key() now return a KeyMessage object

1.0.15

  • change: use queue to store keyboard/mouse message

  • remove: set_message_outdate_duration()

  • change: now get_message() return 5 results instead of 4

  • add: clear_mouse_msg(), clear_key_msg(), clear_char_msg()

  • add: create_image_from_file()

1.0.14

  • fix: processing not working

  • fix: get_key() and has_kb_msg() not working

  • add: set_message_outdate_duration()

  • add: bezier_point and bezier_tangent functions

  • add: curve_point and curve_tanget functions

  • add more documents and examples

1.0.13.1

  • fix: immediate mode not work

  • fix: set_flip_y() dosen’t work when reused after reset_transform()

1.0.13

  • add easy_run mode

  • now the easy_run mode is the preferred mode to run easygraphics. It can work under Linux, macOS and windows.

1.0.12

  • fix: the drawing is not stopped immediately after the turtle window is closed()

1.0.11

  • fix: dialog get_username_password() hangs.

  • fix: dialog get_color() not work

  • fix: dialog show_html()/show_code()/show_text() not work

1.0.10

  • add: show_objects() now can show a DataFrame.

1.0.9

  • add: enable_sorting parameter in show_objects()

1.0.8

  • fix: crash when show_objects() called successively.

  • dialogs will close the auto-started qapplication instance when exception raised.

1.0.7

  • fix: show_objects() don’t show non-primitive-type properties correctly

1.0.6

  • change: get_open_file_name()/get_file_names()/get_save_file_name() now use native dialogs, to avoid crash on pyqt >= 5.11.3

  • add: FileFilter const class, and filter parameter in get_open_file_name()/get_file_names()/get_save_file_name()

1.0.5

  • add: get_open_file_name() to dialog package.

  • fix: get_open_file_name()/get_file_names()/get_save_file_name() not work

  • change: get_open_file_name()/get_file_names()/get_save_file_name() return filename(s), instead of tuple

1.0.4

  • remove the y-flip setting in ortho_look_at(). If you want to flip y, use set_flip_y() instead

1.0.3

  • add: ortho_look_at() function to map 3d point to 2d

  • add: isometric_projection() function to map 3d point to 2d from 45degree view port

1.0.2

  • add: press ctrl+shift+alt+F10 will create a snapshot of the graphics window.

    The snapshot is saved in the running folder.

  • change: close turtle window will automatically close the animation of turtle moving.

1.0.1

  • add: fps settings in easygraphics.processing module

  • update: translations

  • change: easygraphics.processing module now use functions in easygraphics modules to draw. (Remove duplication defines.)

1.0.0

  • fix: hangs in inactive shell when init_graph again after close_graph()

0.10.1

  • add: color_gray() function.

  • change: change lines/polylines/polygon functions parameters

  • add: curve() / draw_curve() to draw Catmull-Rom splines.

  • add: curve_vertex() to define curve vertices.

  • fix: crash when close_graph() and init_graph() again

0.10.0

  • change: reimplement close_graph(), simplifies graphics window close event processing.

  • add: add begin_shape()/vertex()/bezier_vertex()/quadratic_vertex()/end_shape() functions to easygraphics.

0.9.24

  • add begin_recording()/add_record()/save_recording()/end_recording() to create animated png files.

  • add ShapeMode consts

  • add set_ellipse_mode() and set_rect_mode() to Image class

  • add easygraphics.processing module

  • fix: Image’s save_settings()/restore_settings() now save most settings.

  • update: ellipse_mode apply to arc/chord/pie shape drawings.

  • add quadratic()/draw_quadratic() function to Image class and easygraphics.processing subpackage

  • add begin_shape()/vertex()/bezier_vertex()/quadratic_vertex()/end_shape() function to Image class and easygraphics.processing subpackage

  • change: bezier()/draw_bezier now use seperate coordinate values as paramter instead of list.

  • add VertexType consts

  • add: begin_shape() ‘s type parameter

  • add: end_shape()’s close parameter

  • fix: succesive dialog calls may crash the program

  • add: fill_image() function to Image class

0.9.23

  • fix: frame jumping because of errors in delay_jfps()

0.9.22

  • fix: turtle icon position error when translated.

  • fix: hangs when running in qtconsole and spyder

0.9.21

  • add: show_lists_table() to display data lists in table

  • add: get_transform()/set_transform()/push_transform()/pop_transform()

  • change to BSD license

  • fix: close graphics window when drawing in is_run() and delay_fps()/delay_jfps() loops not throw exception

0.9.20

  • fix: successive dialog calls may crash program.

0.9.19.2

  • fix: license description in readme

0.9.19.1

  • fix: license description in setup.py

0.9.19

  • change to MIT License

0.9.18

  • add ImageWidget and TurtleWidget classes, to embed easygraphics in Qt Applications

0.9.17

easygraphics.turtle:

  • add: is_out_of_window() to check if the turtle is out of the graphics window

0.9.16

  • redefine pause() in turtle

  • redefine is_run() in turtle

  • fix: default turtle speed

  • change: meaning of the turtle’s move_arc() function’s parameters

  • add: move_ellipse() function in easygraphics.turtle package

0.9.15

  • fix package error in setup.py

  • change turtle’s default speed to 10

0.9.14

  • add: move_arc() function to move turtle in arc

0.9.13

  • add: set_fill_rule() / get_fill_rule() function, to control how the polygons are filled.

  • add: FillRule consts

  • Finish chinese translations for apis.

  • fix: filling glitches in end_fill()

0.9.12

  • Revert 0.9.11 ‘s angle system change. Keep arc/pie/chord compatible with BGI.

  • add show_image() function, to display drawings in the jupyter qtconsole or notebook.

  • add show_image_dialog() function, to display a qimage in the dialog.

0.9.11

  • fix: now arc/pie/chord drawing functions has the same angle system with rotate()

0.9.10

  • add: easygraphics.turtle package which implements the turtle graphics.

  • change: now rotate()/skew() can transform around any point

  • change: now reflect() can using lines not passing the origin as the reflecting axis.

0.9.9

  • add set_flip_y() to make y-axis grows bottom-up. (use reflect() will make texts get reflected too.)

0.9.8.1

  • fix: legacy and music subpackage not packed in the binary distributions.

0.9.8

  • fix: delay_fps() now work properly in Manual render mode

  • finish chinese translations for tutorials

0.9.7

  • add: load_image() to load image from files

  • add: to_alpha() to make a transparently color

  • change: use Source Over as the default composition mode (the same with Qt)

  • more tutorials

  • add: show_table() to display table infomation in a dialog

  • change: rename mouse_msg() to has_mouse_msg()

  • change: rename kb_hit() to has_kb_hit()

  • change: rename get_mouse() to get_mouse_msg()

  • change: rename kb_msg() to has_kb_msg()

  • finish the tutorials.

0.9.6

  • add: reflection (mirror/flip) and shear (skew) operations.

0.9.5

  • add: headless mode support (no graphics window mode, use it to draw pictures)

0.9.4

  • add: easygraphics.legacy package to better compatible with old BGI programs.

  • add: get_click() function to get mouse click event

  • change: background implementation to make set_background_color() work correctly

  • add: now can use name (“red”), color string (“#ff0000), integer color rgb value (0xff0000)

    in set_color(), set_fill_color(), set_background_color() functions

  • add: cymk() and hsv() to get CYMK and HSV format color

  • more tutorials

0.9.3

  • fix : Readme

0.9.2

  • add: easygraphics functions can run in the interactive mode (eg. IPython) correctly

  • add: dialogs (in easygraphics.dialog package, adopted from

    easygui_qt )

  • add: create and save to/from file

  • add image transforms (translate/rotate/scale)

  • add view port support

  • add sphinx docs

  • upload docs to readthedocs.org

0.9.1

  • add readme text

  • add delay_fps() and rgb() functions

0.9.0

0.1.0

  • First release on github

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

easygraphics-2.0.1.2.tar.gz (69.0 kB view details)

Uploaded Source

Built Distribution

easygraphics-2.0.1.2-py3-none-any.whl (78.2 kB view details)

Uploaded Python 3

File details

Details for the file easygraphics-2.0.1.2.tar.gz.

File metadata

  • Download URL: easygraphics-2.0.1.2.tar.gz
  • Upload date:
  • Size: 69.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.9

File hashes

Hashes for easygraphics-2.0.1.2.tar.gz
Algorithm Hash digest
SHA256 80b8e2435e8e6432185ba12e7fcd392cc8fd120154f5186acee98f269fadbde5
MD5 1fcebdc78ed71c2a58d1d06062034de1
BLAKE2b-256 8b409893066864d54eee53cd4e9fc0fe1ea53375b83c6b922a2649f343f796f1

See more details on using hashes here.

File details

Details for the file easygraphics-2.0.1.2-py3-none-any.whl.

File metadata

  • Download URL: easygraphics-2.0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 78.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.9

File hashes

Hashes for easygraphics-2.0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 024b0b4be242ff8242c5fecae3b00e03f9d19e7c4afd0c82c0190e35f26fb205
MD5 91468a4bb109afe22c20a8590ec25aa7
BLAKE2b-256 8747fde8e863d2f6212da13a5746d75ece10200d8631850e33a0560e26f259dd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page