Windows上的PHP咒语
是否有相当于php的ncurses的窗口? 我已经创建了一个CLI脚本,并且想要以不错的方式显示各种统计信息(当前处理的记录,完成百分比等),而无需输出负载和文本堆到cmd.exe窗口. Ncurses扩展名在Windows上不起作用. 解决方案 ncurses仅适用于类似于Unix的环境,因此您可以使用Cygwin,但[链接过时]看起来很有希望.检查一下,让我知道! (编辑2016年4月:删除了链接,因为它已过时并单击它会带您走下一个令人讨厌的路径.) 其他解决方案 有
0 2023-05-30
编程技术问答社区
部署依赖C的Perl库
我有一个我在Linux(Red Hat)和Unix(Solaris)上部署的应用程序.我的应用程序使用内置的perl安装自身,从那时起创建自己的本地perl(新用户). 我想知道什么是部署我还必须事先编译libncurses? 注意:计算机没有网络连接,因此我不能使用CPAN模块. 解决方案 您应该使用CPAN客户端(CPAN.PM,CPANPLUS)部署来自CPAN的Curses :: UI等模块.通常,您需要开发LIB来编译XS模块.对于诅咒:: UI,Ubuntu软件包称为libncurses-dev.其他Linux发行版可能在相同或相似的名称下具有ncurses devel软件包. 您说您有当地的Perl Lib.拥有本地lib的一种非常好的方法是同名的模块 - local :: lib .它的文档将告诉您如何使用CPAN客户端轻松地将模块安装到本地:: lib. 其他解决方案 对于需要构建的CPAN模块,请尝试查看 carton .它具有一个捆
0 2023-05-24
编程技术问答社区
Perl + Curses。期望从getchar()得到一个UTF-8编码的多字节字符,但没有得到任何字符
我正在尝试Bryan Henderson的Perl界面到Ncurses库:诅咒 为了进行简单的练习,我尝试在屏幕上获取单个字符.这直接基于 ncursing ncurses ncorsing howto with howto 和适应. 当我调用perl库的getchar()时,我希望会收到一个字符,可能是多键(如这是下面代码中的子例程read1ch() 这适用于ASCII字符,但对0x7F上方的字符不起作用.例如,击打è(unicode 0x00e8,我需要更改以使其正常工作,即将è作为适当的字符或perl字符串? getchar() getchar()是在这里 btw .也许只是没有使用C_GET_WCH套装进行编译?如何找出答案? 附录 附录1 尝试设置binmode STDERR, ':encoding(UTF-8)'; binmode STDOUT, ':encoding(UTF-8)'; 应该解决任何编码问题,因为终端期望并发送U
0 2023-05-24
编程技术问答社区
NCurses和Perl,有什么指南吗?
我需要与perl一起使用ncurses.我发现了一些很短的文字,但根本没有例子. 是否有人知道在线有任何现有指南? 谢谢! 解决方案 :教程 tldp.org的示例是: 另外,来自 http:///www.perl .com/doc/faqs/faq/oldfaq-html/q3.8.html : 使用诅咒的很好的例子 使用Perl,您可能想接一个 Steven L Kunz的* perl menus'' package (菜单的副本 来自的匿名FTP ``ftp.iastate.edu''.在 目录/pub/perl as: 菜单pl.v3.1.tar.z 另一种可能性是使用Henk 彭宁的CTerm包,诅咒 用perl编写的仿真库. CTERM实际上是一个单独的程序 您通过管道与之交流. 它可从ftp.cs.ruu.nl获得 [131.211.80.17]通过匿名FTP.在 目录pub/perl.
0 2023-05-24
编程技术问答社区
骂人者按输入的字符打印
使用python我想在键入时打印字符,这在Java脚本中很容易,但是我不了解如何使用Cursses模块,这是我尝试过的代码,但它不起作用. import curses stdscr = curses.initscr() curses.echo() curses.cbreak() a = raw_input() print a stdscr.refresh() 您可以解释一下我如何使用诅咒模块的这一部分. 解决方案 如果您只想获取用户输入并在键入字符时将字符打印出来,则无需执行任何操作: import curses stdScr = curses.initscr() myInput = stdScr.getstr() curses.endwin() print(myInput.decode('utf-8')) 在这里,您只需通过调用curses.initscr()初始化诅咒模块.它为您提供了STDSCR,您只需要调用STDSCR的GetSt
2 2023-05-23
编程技术问答社区
当从源码构建ncurses时,如何为terminfo数据库设置自定义搜索路径
从源构建NCurses时,如何为terminfo数据库设置自定义搜索路径? 要更具体,我如何迫使要在'〜/.terminfo'? 中搜索的主要目录 解决方案 来自 terminfo manpage : 提取编译的描述 如果设置了环境变量终端,则将其解释为 包含您的编译描述的目录的路径名 继续工作.仅搜索该目录. If TERMINFO is not set, the ncurses version of the terminfo reader code will instead look in the directory $HOME/.terminfo for a compiled description. 您可能需要查阅Manpage以获取有关如何编译终端文件的信息. 我希望这会有所帮助. 其他解决方案 在configure中定义--datadir标志,例如: configure --datadir=/usr/c
0 2023-05-21
编程技术问答社区
NCurses不能恢复终端行为
你好亲爱的communauts, 我正在为我正在开发的并行软件创建终端动画状态报告.我正在使用ncurses. 我有一个与恢复终端的标准行为有关的问题. 运行我的软件后,无论我致电Endwin()还是我不这样做,终端都只有24行. 这里简化的代码: int size=10; initscr(); refresh(); while(KeepAlive){ int j=1; mvprintw(j,0,/*Blah blah header*/)); for(int i=0;i
4 2023-05-11
编程技术问答社区
为相同的子菜单减少C++代码
我正在编码本学期的最后一个项目,并且有一个代码重复问题. 我正在使用ncurses或pdcurses进行菜单与用户交互. 问题:对于菜单的每个选择(总共五个),我需要一个子菜单.子菜单与主菜单的唯一区别是,要打印的Items数组以及由于Items阵列大小而进入某些功能的参数.由于我需要五个子菜单,因此我需要相同的代码五倍(如果添加主菜单,则需要六次. . 你们中的任何一个都可以帮助我做一个可以执行同样事情的函数,然后我会致电六次以创建我的菜单? 这是我的代码 void Menu(){ const char* Items[]={ "[1]...New tax declaration", "[2]...Modify tax declaration", "[3]...Cancel tax declaration", "[4]...Additional Information", "[5
2 2023-04-20
编程技术问答社区
例子 KEY_ENTER 没有发挥预期作用
我正在尝试创建一个响应键盘输入的程序.目前,下面的菜单正常运行,但是按Enter Enter时,我会遇到问题.当我按Enter时,什么都没有发生.我只是想知道为什么会发生这种情况? 非常感谢! #include #define MENUMAX 6 void drawmenu(int item) { int c; char mainmenu[] = "Menu"; char menu[MENUMAX] [10] = { "1", "2", "3", "4", "5", "6" }; clear(); attron(A_BOLD | A_UNDERLINE);
6 2023-04-20
编程技术问答社区
NCURSES printw 获得正确的RETURN和SPACE的键码输出
好吧,我正在使用以下代码非常有效,除了打印钥匙返回和空间的正确信息外. 我尝试了许多方法,但是这似乎是最接近的. 更新:根据托马斯·迪基(Thomas Dickey)的建议, #include int main() { initscr(); cbreak(); /* as per recommend Thomas Dickey */ noecho(); /* as per recommend Thomas Dickey */ int c, SPACE=32, RETURN=10; /* i know this is wrong but..? */ /* with changes return key is 10 , yet name for keys SPACE && RETURN do not display, which is the gist of my question. What am
0 2023-04-20
编程技术问答社区
execvp()输出为ncurs创建缩进
我目前的项目遇到了一个奇怪的问题.使用ncurses,我是根据 lsh 制作的,在我介绍ncurses之前,它正如人们所期望的那样,只需编写execvp的输出即可.但是,现在,输出的长度在我的提示之前缩进了缩进,这实际上也将其与x配位移到了侧面(因此缩进似乎不属于行). 我认为这是由于没有ncurses(或类似的东西)划分的儿童过程. 您可以看到完整的代码int shell_launch(char **args) { pid_t pid; int status; pid = fork(); if (pid == 0) { // Child process. // Check if user is trying to run an allowed program. for (int i = 0; i
20 2023-04-20
编程技术问答社区
Ncurses限制输出大小
我正在学习如何使用ncurses,并且处于奇怪的状态. 看来我的输出不能超过24行. 此外,每当我运行软件并且执行完成他的工作时,我的终端都会像以前一样停止工作,而我有2种不同的情况: 如果我从第24行背后的一行启动了我的运行,我可以使用终端,但是如果我在窗口的最后一行时继续滚动,没有任何新线在输入压力下出现. 如果我在第24行上方推出了运行,则终端只会变为24线. 这两种情况都要求我重置终端,然后一切再次工作. 我在Mac OSX机器上. 解决方案 屏幕尺寸有问题: 最容易看到的是,如果您的LINES环境变量设置为24. nofollow noreferrer"> use_env manpage给出了一些线索. 听起来像屏幕大小的问题的原因是问题的描述表明该程序将滚动区域设置为24行. 如果LINES没有问题,则可以通过运行stty -a来查看操作系统假定屏幕尺寸的位置.这在stty的第一行中报告为"行". 在某些情况下(例如,在远程网络连接中),可以
0 2023-04-20
编程技术问答社区
ncurses背景等待退出
考虑以下代码.我希望该程序在按下EG之后结束. f10 .我不想改变程序的行为,我想在后台做,等待钥匙按下然后结束.如何修改程序以实现这一目标? #include #include int main () { int parent_x, parent_y; int score_size =10; int counter =0 ; initscr(); noecho(); curs_set(FALSE); getmaxyx(stdscr, parent_y, parent_x); WINDOW *field = newwin(parent_y - score_size, parent_x, 0, 0); WINDOW *score = newwin(score_size, parent_x, parent_y - score_si
12 2023-04-20
编程技术问答社区
在一个循环中做initscr()会导致初始化错误
我正在尝试制作一个简单的ncurses程序,以显示带有消息的框.我遵循此 link ,效果很好.我遇到的问题是,如果我将整个代码放在函数中并将其称为循环,则初始化是错误的.据我所知,如果我在功能末尾打电话给endwin(),则不会再调用initscr()了.我是否缺少一个函数来再次调用initscr()? 这是代码: #include #include #include #include int call() { WINDOW *mainwin, *childwin; int ch; if ((mainwin = initscr()) == NULL) { fprintf(stderr, "Error initialising ncurses.\n"); exit(EXIT_FAILURE); }
2 2023-04-20
编程技术问答社区
ncurses' has_colors()返回错误。问题出在哪里?
我想在ncurses模式下使用颜色属性.但是如主题中所述,has_colors()返回错误,这意味着终端不支持颜色操纵.但是使用printf()和ANSI颜色代码(不在Ncurses模式下),我可以打印颜色文本.我认为这意味着终端支持颜色操纵.我错了吗?有什么问题? 这是我使用的代码: int main() { initscr(); if (has_colors() == false) { endwin(); printf("No color support!\n"); return -1; } start_color(); init_pair(1, COLOR_RED, COLOR_BLACK); attron(COLOR_PAIR(1)); printw("This is a test!"); attroff(COLOR_PAIR(1));
14 2023-04-20
编程技术问答社区
命名空间中的两个对象将被不同的函数默认初始化,并被命名空间中的类使用
我有一个奇怪的要求.我有一个名称空间foo,其中有两个bar1和bar1和bar2类型的对象,我想通过类bar的构造函数初始化.这是一种合理的方法: namespace foo { class bar; foo::bar *bar1; foo::bar *bar2; } class foo::bar { /* Initialize bar1 and bar2 in the constructor. */ InitializeBar(); }; 这个恶作剧背后的原因是我想创建一个类似于cout和cin的对象,因此用户无需定义foo::bar1和foo::bar2.更具体地说,我正在使用ncurses,并希望用输出窗口bar1和cin用输入窗口bar2替换cout,并在输出窗口中foo::bar1 > b从输
4 2023-04-20
编程技术问答社区
咒语、印刷品和当代获取字符串
用C编写的程序使用ncurses. while周期用于连续检查新消息是否以队列到达:如果是,则该消息将在屏幕上打印,然后从队列中删除: while (condition) { if (queue_not_empty) { printw(element_from_queue); refresh(); remove(element_from_queue); } } 同时,该程序应能够从用户获取输入字符串,然后通过scanw将其存储在数组char message[100]中. 但是如果我放 while (condition) { if (queue_not_empty) { printw(element_from_queue); refresh(); remove(element_from_queue); } scanw(message); } 该周期将停止,直到用户未键入字符串,并且程序将在用户输入后仅打印队列的新消息.不应该这样!队列消息可以随时到达,应打印;用户消息可
4 2023-04-20
编程技术问答社区
python curses远程调试 pdevd在setupterm中的错误
是否可以在Pycharm中远程调试诅咒程序?如何设置它? 我遵循Pycharm 4.0.8指令,将其添加到" npyscreen-4.8.7"的" EXAMPLE.py"中. import pydevd pydevd.settrace('localhost', port=8899, stdoutToServer=False, stderrToServer=True) 始终遇到" setupterm"中的错误: $ PYTHONPATH=~/bin/pycharm-debug.egg python EXAMPLE.py Traceback (most recent call last): File "EXAMPLE.py", line 34, in App.run() File "/home/.../npyscreen-4.8.7/npyscreen/apNPSApplication.py", line 30, in run
2 2023-04-20
编程技术问答社区
如何以及是否在没有Ncurses的情况下对文本进行着色
ncurses可以使文本着色,但GNU实用程序如ls和diff显然会在不调用ncurses的情况下为文本着色.我也可以在不调用ncurses的情况下便便地为文本着色吗?例如,在C: 中 printf("the word \033[32mgreen\033[0m is printed in color\n"); 这在我的安装上有效,但看起来非常便携.另一方面,如果ls和diff以这种方式或多或少地这样做,那么我将谁称呼该技术是不可商品的? 检查GNU来源,我注意到ls使用dircolors或$LS_COLORS,但不确定这与ls以外的任何事物有关.无论如何,据我所知,diff既不使用dircolors and $LS_COLORS也不着色. 此外,less -r似乎可以处理我的示例的输出而没有麻烦. 我想念什么吗?每当ncurses的完整机械不需要时,发行\033[32m之类的原始逃生代码,例如\033[32m green确实是使文本着色的常规方式?还是存在我不知
0 2023-04-20
编程技术问答社区
python curses中的刷新问题
我正在用curses编写一个程序,有时会发生,如果我打开程序并使用其他终端选项卡,那么当我再次使用该程序时,似乎已经刷新了某些东西,并且某些东西有东西消失了...我无法显示图片或屏幕截图,因为我何时以及如何发生都没有理解...是否有办法预防或修复此问题? 解决方案 screen.getch从stdscr读取,如果刷新(由于屏幕上的任何更改),将覆盖boxes.您可以将其更改为box.getch,就像我在 如果窗口不是垫子,并且自从上次呼叫 wrefresh , wrefresh 以来,它已被移动或修改,将在读取另一个字符之前被调用./p> 在您使用的示例程序中 screen.keypad( 1 ) 仅适用于从标准屏幕上阅读.如果您从box窗口中读取,则应在此上设置键盘标志: box.keypad( 1 ) 键盘的默认值为false 也就是说,这是每个窗口的默认值. 带有多个窗口的诅咒程序可以选择在不同时间从不同的窗口读取.每个屏幕只有一个输入缓
2 2023-04-20
编程技术问答社区