使用Python在终端里搞出一些骚操作
本文最后更新于 362 天前,其中的信息可能已经有所发展或是发生改变。

选项菜单

这个选项菜单可以使用WS移动,按Enter确定,就像日常使用的界面一样熟悉便捷。

这是如何做到的呢?其实很简单。

导入库

这个效果是使用conkits库,这个库的制作大佬我还认识。

from conkits import Choice

输入文案

新建一个列表,写上选项的文案,字符串类型:

from conkits import Choice

taxt = [
    '选项A',
    '选项B'
]

调用函数

再新建一个列表,写上对应的函数名称,不需要加括号和引号。

from conkits import Choice

taxt = [
    '选项A',
    '选项B'
]
method = [
    A,
    B
]

在这段代码中,如果用户选择选项A,那会运行A函数,以此类推。

创建函数

有函数名了,但是函数本身哪去了?没有?造一个!

from conkits import Choice

taxt = [
    '选项A',
    '选项B'
]
def A():
    print('这是选项A')
def B():
    print('这是选项B')
method = [
    A,
    B
]

需要注意的是,函数必须要在调用函数的列表前面。

启动菜单

把菜单的灵魂加上,完美!

from conkits import Choice

taxt = [
    '选项A',
    '选项B'
]
def A():
    print('这是选项A')
def B():
    print('这是选项B')
method = [
    A,
    B
]
option = Choice(options = taxt, methods = method)
option.run()

其中,变量optiontaxtmethod的名称都是可以改变的。Choice函数的参数定义如下:

  • options:菜单文案列表
  • methods:调用函数列表

优雅地为文字添加颜色

一般我们打印彩色文字时都这样写:

printf("\033[1;30;43m每个月的零花钱:%d。\033[0m\n", pocket) ;
printf("最低生活保障:%d。\n\n", subsistenceAllowance) ;
printf("一个月可以买:\n") ;
printf("\033[1m%d\033[0m 台 4000 元手机。\n", phone) ;
printf("\033[1m%d\033[0m 台 8000 元电脑。\n", computer) ;
printf("\033[1m%d\033[0m 款 300 元 3A 游戏。\n", game) ;
printf("V \033[1m%d\033[0m 人 50 元。\n\n", v50) ;
printf("输入\033[1m任意字符\033[0m关闭...") ;

这是一段C语言的代码片段,本来C语言的语法就抽象,再加上传统的颜色控制码使这段代码更具欣赏价值

不仅内行人看的头痛,外行人还以为是乱码。

但是Python就不用担心这种问题,rich库把我们从水深火热中拉了回来。

导入库

from rich import print

需要注意的是,这时候原版的print函数已经被rich接手了,实测在部分用途下一些功能无法正常使用,所以建议与原版区分开。

from rich import print as rprint

前景色

rich的语法与HTML类似。使用方括号表示一个标签,直接写在字符串里。

设置前景色,只需要在标签里面写颜色的名字就行了,比如说红色文字:

rprint('[red]Hello world![/red]')

背景色

使用[on <背景色名称>]可以设置背景色,比如说背景为青色的文字:

rprint('[on cyan]慧家智能家庭中枢[/on cyan]')

特殊样式

rich支持文字的特殊样式,比如加粗、斜体、删除线等,以下是一些样式:

  • bold:加粗
  • italic:斜体
  • underline:下划线
  • strikethrough:删除线

和颜色一样,只需要在标签里面写样式的名字就行了,比如说加粗文字:

rprint('[bold]这是一段重要的文字[/bold]')

组合

颜色和样式可以组合使用,并且无需打开多个标签,只需要在标签里面加空格:

rprint('[black on yellow bold underline]Pink OS未正确退出[/black on yellow bold underline]')

前景色要放在背景色前面。

装逼功能

在终端输入这个命令试试看:

python -m rich

TUI

使用Textual构建TUI,之前已经有写教程了:Textual制作TUI界面 – Pinpe的云端

一些迷你代码

清屏

def cls():
    print('\033[2J')
    print('\033[1;1H',end='')

无限平台的清屏函数,无参数。

逐字打印文字

def dprint(string):
    for char in list(string):
        print(char, end='', flush=True)
        time.sleep(0.05)

像RPG游戏一样逐字出现的文字,参数如下:

  • string:想要打印的文字

光标控制

class cursor:
    def show():
        print('\033[?25h',end='')
    def hide():
        print('\033[?25l',end='')

控制光标的显示和隐藏,cursor.show()显示光标;cursor.hide()隐藏光标,无参数。

加载动画

def load(string,sum):
    timeflush=0.25
    for i in range(0, int(sum/timeflush)):
        list = ["\\", "|", "/", "—"]
        index = i % 4
        print("\r"+string+' {}'.format(list[index]),end='')
        time.sleep(timeflush)

给加载加入旋转的线,让用户觉得没死机,参数如下:

  • string:加载提示文字
  • sum:加载时间

进度条

def bar(string1,string2,num):
    timeflush = 0.5
    for i in range(0, int(num/timeflush)+1):
        print("\r"+string1 + "|" + "*" * i + " "*(int(num/timeflush)+1-i)+"|" + str(i), end="")
        time.sleep(timeflush)
    print("\r"+string2)

显示进度条,直观地表示进度,参数如下:

  • string1:加载提示文字
  • string2:完成提示文字
  • num:加载时间
注意:
除非另有声明,本文可以自由使用、转载和二次创作,但需注明作者,并以相同许可协议分享,且不得用于商业目的。详情请参阅:CC BY-NC-SA 4.0许可协议。

- 标题:使用Python在终端里搞出一些骚操作
- 作者:Pinpe
- 链接:https://blog.pinpe.top/1637/

评论

  1. SumaRoder
    12 月前
    2023-12-24 15:10:28

    没vpn [尬]

  2. SumaRoder
    12 月前
    2023-12-16 22:12:51

    我用的是清华源,conkits安装完成后报错这个库里面引入不了Choice方法

    • 博主
      SumaRoder
      12 月前
      2023-12-17 10:58:14

      清华源的是旧版,pypi上的才是新版,我也不知道为什么同步不了

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
呼呼
上一篇
下一篇