Skip to main content

pygame-console - 0.5

Simple interactive terminal for pygame


John Schanck
(jmschanck)
pygame-console provides a console similar to the one found in games such as Quake 3, which can be imbedded into any pygame application.

Changes

This version adds a lot of new functionality. You can now select between the pyconsole interpreter which was previously available (which has lots of new features too). Or a full fledged python interpreter. I've fixed a whole bunch of bugs, and made it all a bit easier to use (at least in my opinion). The Pyconsole interpreter now supports variable assignment (using the form $name = value), and now you can get and pass variables to and from the console. Having the python interpreter available is a huge step and we're nearing completion -- at least feature wise. I'll try to improve the documentation some time soon, but for now if you have any questions my email address is in the Readme. -John

Links

Home Page
http://sourceforge.net/projects/pygame-console
Source
http://sourceforge.net/project/showfiles.php?group_id=174718

Releases

pygame-console 0.1 — 11 Aug, 2006

pygame-console 0.5 — 13 Sep, 2006

pygame-console 0.7 — 2 Dec, 2006

pygame-console 0.2 — 17 Aug, 2006

Pygame.org account Comments

  • WeevilKnevil 2012-05-02 00:16

    Awesome! Keep going!

  • zoobar 2016-06-20 20:47

    Its a bit buggy when typing non asscii letters. If you actually use unicode letters such as ö,ä the app crashes instantly.

  • zapman 2016-06-21 21:43

    Very useful addition is to integrate support for the localy stored database sqlite. This allows storing the cfg file in a database instead of a flat file. I accomplished this by adding a few lines in the __init__ method and the load_cfg method. Basic idea is that variables are stored in some table in slqite (create table dvars (name text,value text)) and read on start.

    What needs to be changed

    class Console:
    def __init__(self, screen, rect, functions={}, key_calls={}, vars={}, syntax={},database=None):

    self.database = database

    and...

    ##################
    #-Initialization-#
    def load_cfg(self):
    '''\
    Loads the config file path/pygame-console.cfg\
    All variables are initialized to their defaults,\
    then new values will be loaded from the config file if it exists.
    '''
    self.init_default_cfg()
    if os.path.exists(cfg_path):
    for line in file(cfg_path):
    tokens = self.tokenize(line)
    if re_is_comment.match(line):
    continue
    elif len(tokens) != 2:
    continue
    self.safe_set_attr(tokens[0],tokens[1])

    #add database values if any
    if self.database!=None:
    #convert to database if string entered
    if(not hasattr(self.database,"execute")):
    import sqlite3
    self.database = sqlite3.connect(self.database)
    ans = self.database.execute("select name,value from dvars")
    if(ans!=None):
    for row in ans:
    aval = row[1]
    try:
    aval = eval(row[1])
    except Exception,e:
    pass
    self.safe_set_attr(row[0],aval)

    #allow any vars to be loaded

    self.setvar(row[0],aval)

  • zapman 2016-06-22 13:52

    Another thing missing from the pyconsole are triggers/callbacks to be called when a variable changes value. This allows you to call a setup function if you change settings that require loading of bitmaps, fonts etc. With some changes of the code changing system variables like "ps1" would instantly change the console settings...
    In other words add a table with a couple of functions that get called when a variable changes in setvar and create some setup function that gets called if any of the console sys parameter changes.

    Furthermore the parsing of some text messages is not working properly, for instance "some 'string2\"escape string\"' " isnt't working as expected. The parsing of text delimiters isnt good enough..

  • zapman 2016-06-23 15:15

    Additional the function output can only take a single argument and requires that input is text.
    Add something like this
    def output(self, *itext):
    text = ""
    for atom in itext:
    text = text + str(atom)