首页
学习
活动
专区
圈层
工具
发布

python 在命令行模拟浏览器的进退功能

python 实现栈 由于 python 的 list 数据结构十分强大,所以使用 list 的内置操作,我们很轻松地就实现了栈这种数据结构。栈作为一种受限的线性表,我们只能操作栈尾部的元素。...但需要注意的是,我们需要判断栈是否为空,如果为空,我们不能进行删除元素的操作;还要判断栈是否已满,如果已满的话,我们不能进行添加元素的操作。top函数返回栈尾部的一个元素,size函数返回栈的大小。...退:是指从页面 d 返回页面 c ;进:是指返回页面 c 后再前进到页面 d。通过两个线性栈,就可以保存前进与后退所有的元素。...但是,如果我退到页面 b 之后,我又新开了页面 e,我就无法通过页面 e 返回到页面 c,d。...= curses.initscr() # stdscr.getchar() 返回的是 # 输入的单个字符的 ascii 码值 # 假如输入'p',返回 112 stdscr.getch() # 清除屏幕

94610

3个Python 文本终端 GUI 框架,太酷了

大家好,我是辰哥~ 最近看到几个有意思的基于文本终端的 UI 框架,还可以制作命令行网易云音乐。 Curses 首先出场的是 Curses[1]。...myscreen.refresh() myscreen.getch() curses.endwin() 需要注意 addstr 前两个参数是字符坐标,不是像素坐标 getch 会阻塞程序,直到等待键盘输入...curses.endwin() 作用是退出窗口 如果需要持续监听用户的交互,需要写个循环,并对 getch() 获得的输入进行判断 代码运行效果如下: 小试牛刀 Curses 非常轻巧,特别适合处理一下简单交互...Npyscreen Npyscreen[3] 也是一个用了编写文本终端的 Python 组件库,是基于 Curses 构建的应用框架。...,就可以看到命令行被设置为交互模式,按键时会在窗口中央显示出键名,如果按下 q 键,程序就会退出。

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python 文本终端 GUI 框架,太酷了!

    今天带大家梳理几个常见的基于文本终端的 UI 框架,一睹为快! Curses首先出场的是 Curses[1]。...myscreen.refresh() myscreen.getch() curses.endwin() 需要注意 addstr 前两个参数是字符坐标,不是像素坐标getch 会阻塞程序,直到等待键盘输入...curses.endwin() 作用是退出窗口如果需要持续监听用户的交互,需要写个循环,并对 getch() 获得的输入进行判断代码运行效果如下:小试牛刀Curses 非常轻巧,特别适合处理一下简单交互...NpyscreenNpyscreen[3] 也是一个用了编写文本终端的 Python 组件库,是基于 Curses 构建的应用框架。...[1]Curses: https://docs.python.org/3/howto/curses.html[2]俄罗斯方块游戏: https://github.com/cSquaerd/CursaTetra

    1.1K10

    Python 文本终端 GUI 框架,太酷了

    myscreen.refresh() myscreen.getch() curses.endwin() 需要注意 addstr 前两个参数是字符坐标,不是像素坐标 getch 会阻塞程序,直到等待键盘输入...curses.endwin() 作用是退出窗口 如果需要持续监听用户的交互,需要写个循环,并对 getch() 获得的输入进行判断 代码运行效果如下: 小试牛刀 Curses 非常轻巧,特别适合处理一下简单交互...Npyscreen Npyscreen[3] 也是一个用了编写文本终端的 Python 组件库,是基于 Curses 构建的应用框架。...,就可以看到命令行被设置为交互模式,按键时会在窗口中央显示出键名,如果按下 q 键,程序就会退出。...[1]Curses: https://docs.python.org/3/howto/curses.html [2]俄罗斯方块游戏: https://github.com/cSquaerd/CursaTetra

    2.3K60

    【说站】Python curses库如何使用

    Python curses库如何使用 1、Python内置了curses库,但是对于Windows操作系统需要安装一个补丁以进行适配。...实例 Python内置了curses 库,其使用方法非常简单,以下脚本可以显示出当前按键对应编号: # 导入必须的库 import curses import time   # 初始化命令行界面,返回的...) 方法让 getch 为非阻塞等待(即使没有输入程序也能继续执行) stdscr.nodelay(True) while True:     # 清除 stdscr 窗口的内容(清除残留的符号)     ...stdscr.erase()     # 获取用户输入并放回对应按键的编号     # 非阻塞等待模式下没有输入则返回 -1     key = stdscr.getch()     # 在 stdscr... 的第一行第三列显示文字     stdscr.addstr(1, 3, "Hello GitHub

    1.5K30

    实现类似于top一样的效果用于数据展示

    可以实现指定键退出等 发现了一个Python的 curses模块 来实现这个效果 初步代码 import curses import time def main(stdscr): # 禁止光标显示...等待一段时间 time.sleep(1) # 运行程序 curses.wrapper(main) 该程序在屏幕上打印出固定的文本Fixed text that will not change...attrs是可选参数,用于设置文本的属性,比如颜色、加粗、下划线等。如果不指定该参数,则默认使用终端窗口的当前属性。 addstr()函数的返回值是一个整数,表示添加的字符串的长度。...# 运行程序 curses.wrapper(main) 在这个代码中,定义了一个表格,包括表头和表格数据。...如果不指定该参数,则默认使用空格。 需要注意的是,这个示例程序中的表格只适用于终端窗口的大小,如果终端窗口太小,表格就会超出终端窗口。如果需要适应不同大小的终端窗口,需要动态计算表格的列宽和行高。

    4.8K21

    Python游戏开发 制作AI贪吃蛇!

    具体功能: 1.智能模式:电脑自己玩(自己吃食物) 2.人机对战:电脑和人操作(在上步的基础上加一个键盘控制的贪吃蛇即可) 实现环境: Pycharm + Python3.6 + Curses + Win10...具体过程: 一:配置环境: Curses: 参考链接 (Cp后面代表本地Python环境,别下错了) ( Stackoverflow 真的是个非常好的地方) 二: 1.灵感来源+参考链接: http:...,挑选距离最小的走(这里就会涉及到将自己吃死,有待改进) (通过以上方法,就可以制造一个基本AI贪吃蛇了,当然,还有很多细节方面东西需要考虑) 报错: win = curses.newwin(HEIGHT..., tmpsnake, tmpboard) # 求得每个位置到蛇尾的路径长度 171 for i in range(4): # 如果蛇头和蛇尾紧挨着,则返回False。...# 如果蛇可以吃到食物,board_refresh返回true 303 # 并且board中除了蛇身(=SNAKE),其它的元素值表示从该点运动到食物的最短路径长 304 if board_refresh

    1.2K20

    python 实现 2048 游戏 (一)

    游戏规则:玩家通过 w s a d 控制数字移动方向,达成 2048 这个数字即获胜。 每次可以选择一个方向移动,数字便会朝这个方向移动,如果遇到相同数字就相加,遇到不同数字或者边界就停止移动。...同时会在空白的地方生成 2 或者 4 的随机数字。通过不断相撞、相加,最后达成 2048 这个数字。 游戏结构图 ?...-2.2+utf8-cp36-cp36m-win_amd64.whl curses 用法简介 curses 用于终端 shell 显示图形: 1# 屏幕不显示用户输入的字符 2curses.noecho...() 3# 使用 curses 首先需要初始化 4stdscr = curses.initscr() 5# stdscr.getchar() 返回的是 6# 输入的单个字符的 ascii 码值...7# 假如输入'p',返回 112 8stdscr.getch() 9# 清除屏幕 10stdscr.clear() 11# 打印字符 12stdscr.addstr('You win') 功能模块

    1.2K20

    C语言趣味代码(三)

    函数名 getch 头文件 #include 格式 int getch(void); 功能 直接从键盘读取字符而不回显 返回值 返回到读取到的字符的值 使用getch函数进行读取时,...函数名 putch 头文件 #include 格式 int putch(int c); 功能 在画面上显示字符c(在一些特殊的编程环境中,如果c时换行符就只换行而不进行返回操作) 返回值...键盘输入和操作性能的提升(UNIX/Linux/OS X) UNIX和Linux通过Curses库来提供getch函数,我们来看下面的代码: #includecurses.h> #include<ctype.h...: initscr 生成屏幕并初始化库,使用Curses库时必须最先调用该函数 cbreak 禁止行缓冲 noecho 禁止输入的字符显示在画面上 refresh 刷新画面 getch 返回输入的字符...\n"); return 0; } 我们调试一下看看效果: 跟之前的程序不同,在这个程序中,只要不按下空格程序就不会进行开始,用于实现这一操作的是while语句,只要getch函数返回的字符不是空白字符

    10110

    Python 学习笔记,制作控制台窗口小游戏-2048

    引入 curses,然后画棋盘第一行 curses 是控制台的图形界面 curses介绍: https://docs.python.org/3/howto/curses.html ?...接收控制台指令 2048 游戏有6个按键操作: w, s, a, d 控制数字平移方向 r 放弃当前游戏,重置棋盘 q 退出游戏 接收指令通过 stdscr.getch() 方法实现 # stdscr.getch...初始化棋盘 将棋盘数据用二维数组对象存储起来,并且增加初始化、向上下左右移动、判断是否可移动方法game 。第一步先实现向左的移动和判断 ?...,查找下一个可合并的单元格 if i + 1 1]: # 找到了下一个可合并的单元格对...,查找下一个可合并的单元格 if i + 1 1]: # 找到了下一个可合并的单元格对

    1.7K20

    python贪吃蛇代码-Python编写简单的贪吃蛇核心代码

    时间:2018-11-14 概述:贪吃蛇 Python贪吃蛇完整代码,代码注释比较多,可学习一下Python编写游戏的一些基本技巧,代码分享如下: #coding=utf-8 import curses...addch(y,x,ch) stdscr = curses.initscr() #初始化curses,返回屏幕对象 curses.noecho() #如果在终端上打字,在终端输入一个a就会显示一个a,如果不要这样的效果...,比如上下左右,如果我们需要特殊处理这些键位,则可以调用keypad(True),这样当我们按下键盘左键,将会返回一个类似KEY_LEFT的特殊值 gameX = 1 #坐标原点y gameY = 1..., ord(“j”): down, ord(“l”): right } “”” 相反方向.传入一个方向,返回其相反的方向 “”” opposite = {curses.KEY_UP: curses.KEY_DOWN...#设置nodelay,为1时,使得控制台可以以非阻塞的方式接受控制台的输入,超时1秒 没什么用 if isGameOver: EndWin() return ch = stdscr.getch() #

    1.7K20

    腾讯云携手CODING,云端IDE——Cloud Studio初体验

    腾讯云授权 申请Free Trial试用后,系统会自动申请一台1核1GB,10G空间的腾讯云主机作为Cloud Studio的后端服务器,如果之前没有绑定腾讯云的账号,此时会跳转至腾讯云的授权页面,点击授权即可...[主机概览] 返回Cloud Studio,继续体验之旅。 体验终端 接下来通过Cloud Studio中的集成终端来对这台云主机一探究竟,可以看到配色还是比较舒服的。...[查看Java、Python版本] 可通过ifconfig命令查看网卡信息,但与硬件相关的命令均无法调用。...= -1: # win.getch returns -1 if no key is pressed if key == curses.KEY_UP: if direction...但是,Free Trial版本中Access URL的有效期仅为1个小时(解除有效期限制须升级CODING钻石会员),并且无法通过公网IP访问腾讯云专用主机,因此如果需要在公网中提供服务又对图形界面没有太大执念的话

    10.8K210

    用 Python 拓展 GDB(四)

    在本篇中,我们会把python当作一门“胶水语言”,A面是gdb的接口,B面是一个终端界面的程序。姑且把这个终端界面程序称之为gti(gdb's terminal interface)吧。...我们会实现从gdb到gti的单向数据传输。每当gdb触发断点时,就在gti上自动输出各项相关信息。这两者间的通讯使用UDP协议。...提取出json格式的数据 根据收到的数据,重绘当前界面 在绘制终端界面时,我用的是自带的curses模块。...如果真的要开发实际可用的终端界面程序,建议使用诸如urwid这样的第三方包。 小结 如上面的例子所示,我们成功地用python实现了内嵌于gdb的客户端。该客户端可以向外界暴露出gdb调试时的信息。...如果你是想了解更多关于gdb调试的信息,希望今后遇到相关问题时能想起编写python拓展予以解决。

    1.6K20

    Unix-Linux编程实践教程-chapter07-vediogame

    第7章 事件驱动编程:编写一个视频游戏 有些程序的控制流很简单.而另外一些则要响应外部的事件.一个 视频游戏要响应时钟和用户输入,操作系统也要响应时钟和外设 curses库有一些可以管理屏幕显示字符的函数...一个进程通过设置计时器来安排事件.每个进程有三个独立的计时器....计时器通过发送信号来通知进程.每个计时器都可以被设置为只发送 一次信号,或者按固定的间隙发送信号 处理一个信号很简单.同时处理多个信号就复杂了.进程能决定是忽略 信号还是阻塞信号.进程能告知内核哪些信号在什么时候阻塞或忽略...有些函数执行一些复杂的任务是不能被打断的.程序可以通过小心地 使用信号掩码来保护这些临界区代码 curses库基本函数: initscr() 初始化curses库和tty endwin() 关闭curses...一段修改一个数据结构的代码如果在运行时被打断将导致数据得不完整或损毁, 则称这段代码为临界区,临界区需要保护,最简单办法就是阻塞或者忽略那些 处理函数将要使用或修改特定数据的信号. kill向一个进程发送一个信号

    60930

    手把手教你写linux系统下贪吃蛇(二)

    我们的c语言程序一般是单线程的,从主函数开始,一行一行执行,遇到函数就跳进函数,线程是让两个函数同时执行。 就像你现在看我的博客又在玩qq,这就是多线程。  ...如果不用线程,就会让操作不能立刻显现,显得你的蛇很'笨'。 一)方向函数;(改变方向dirch) void turn(int direction) { if(abs(direction) !...{ op = getch(); switch(op){ case KEY_UP: turn(UP); break; case KEY_DOWN: turn(DOWN); break;...    第二个参数: 线程属性,调度策略,优先级都在这里设置,如果NULL为默认属性 //第三个参数: 线程入口函数,可返回一个(void*)类型的返回值,该返回值可由pthread_join接收 /...汇总: #include curses.h> #include #include #define BOADSIZE 20 #define UP

    1.2K20

    Python 200个标准库汇总!

    :Python对象序列化 copyreg:注册机对pickle的支持函数 shelve:Python对象持久化 marshal:内部Python对象序列化 dbm:Unix“数据库”接口 sqlite3...:日志处理器 getpass:简易密码输入 curses:字符显示的终端处理 curses.textpad:curses程序的文本输入域 curses.ascii:ASCII字符集工具 curses.panel...:curses的控件栈扩展 platform:访问底层平台认证数据 errno:标准错误记号 ctypes:Python外部函数库 并发 threading:基于线程的并行 multiprocessing...modulefinder:通过脚本查找模块 runpy:定位并执行Python模块 importlib:import的一种实施 Python语言 parser:访问Python解析树 ast:抽象句法树...密码验证 termios:POSIX风格的tty控制 tty:终端控制函数 pty:伪终端工具 fcntl:系统调用fcntl()和ioctl() pipes:shell管道接口 resource:资源可用信息

    1.7K50

    Python 200个标准库汇总

    :Python对象序列化 copyreg:注册机对pickle的支持函数 shelve:Python对象持久化 marshal:内部Python对象序列化 dbm:Unix“数据库”接口 sqlite3...:日志处理器 getpass:简易密码输入 curses:字符显示的终端处理 curses.textpad:curses程序的文本输入域 curses.ascii:ASCII字符集工具 curses.panel...:curses的控件栈扩展 platform:访问底层平台认证数据 errno:标准错误记号 ctypes:Python外部函数库 并发 threading:基于线程的并行 multiprocessing...modulefinder:通过脚本查找模块 runpy:定位并执行Python模块 importlib:import的一种实施 Python语言 parser:访问Python解析树 ast:抽象句法树...密码验证 termios:POSIX风格的tty控制 tty:终端控制函数 pty:伪终端工具 fcntl:系统调用fcntl()和ioctl() pipes:shell管道接口 resource:资源可用信息

    1.2K10
    领券