Path: csiph.com!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: Keith Thompson Newsgroups: comp.lang.python Subject: Re: Tools to help with text mode (i.e. non-GUI) input Date: Fri, 17 Jan 2025 11:03:16 -0800 Organization: None to speak of Lines: 39 Message-ID: <87ikqd6z63.fsf@nosuchdomain.example.com> References: <2113dab2-59ba-408e-b34a-78722d525f8c@yahoo.co.uk> <3ab7002b-689d-4609-96d7-bb388513f227@yahoo.co.uk> <87plko9acw.fsf@nosuchdomain.example.com> <844b5f22-623a-42c0-941c-addd3a469687@yahoo.co.uk> MIME-Version: 1.0 Content-Type: text/plain Injection-Date: Fri, 17 Jan 2025 20:03:17 +0100 (CET) Injection-Info: dont-email.me; posting-host="e1a19721430b37b2b8e372382991ee1a"; logging-data="188199"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19/+0gnrn/n3BbC3rh0GJp5" User-Agent: Gnus/5.13 (Gnus v5.13) Cancel-Lock: sha1:CHMZByF6Mm6osaljw/z6Ce8DUqA= sha1:25FflENnlfFSZV1Ov+dHWjwosVM= Xref: csiph.com comp.lang.python:197195 Alan Gauld writes: > On 15/01/2025 00:41, Keith Thompson via Python-list wrote: >> Alan Gauld writes: >>> On 11/01/2025 14:28, Chris Green via Python-list wrote: >>>> I'm looking for Python packages that can help with text mode input, >>> >>> The standard package for this is curses which comes as part >>> of the standard library on *nix distros. >> >> The thing about curses (which may or may not be a problem) is that, by >> design, it takes over the whole screen. If you want to do simpler text >> manipulations (showing a dismissible message, showing bold text, etc.) >> without interfering with existing text, curses can't do it, at least not >> easily. > > It's not that difficult to use the terminfo codes directly. But > that won't give access to things like lists of default values, mouse > control etc that the OP wanted. But for simple text characteristics > and moving the cursor around terminfo works ok even if a bit tedious. > > Here is "hello world" in bold... > > import curses > curses.setupterm() > bold = curses.tigetstr('bold').decode('ascii') > normal = curses.tigetstr('sgr0').decode('ascii') > > print(bold, 'Hello world', normal) Cool -- but I think you want: print(bold, 'Hello world', normal, sep='') > Whilst you can position the cursor etc it very quickly > becomes easier to just use full blown curses. -- Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com void Void(void) { Void(); } /* The recursive call of the void */