标签: python-curses

Python ncurses:在第一次按键之前不显示屏幕,即使刷新是第一次

下面的代码可让您使用箭头键"."在屏幕上的小网格中走动.你在哪里探索过或者在旁边.即使我在第一次getch之前刷新(获得一个击键),屏幕也不会先显示任何内容,直到你离开你的起始位置.不应该立即显示addstr然后刷新然后getch等待吗?我甚至尝试添加一个stdscr.refresh(),但这也没有帮助.如何在等待第一个击键之前立即刷新屏幕?

import curses

def start(stdscr):
    curses.curs_set(0)
    movement = curses.newpad(10, 10)

    cur_x, cur_y = 5, 5

    while True:
        movement.addstr(cur_y, cur_x, '@')
        for (x_off, y_off) in [(-1,0),(1,0),(0,-1),(0,1)]:
            movement.addstr(cur_y + y_off, cur_x + x_off, '.')
        movement.refresh(1, 1, 0, 0, 7, 7) #Nothing is displayed until after the first key-stroke

        key_stroke = stdscr.getch()
        move_attempt = False
        if 0 < key_stroke < 256:
            key_stroke = chr(key_stroke)
        elif key_stroke == curses.KEY_UP and cur_y > 1:
            cur_y -= 1
        elif key_stroke == curses.KEY_DOWN and cur_y < 8: …
Run Code Online (Sandbox Code Playgroud)

python ncurses python-curses

2
推荐指数
1
解决办法
1490
查看次数

我需要一个使用python中的面板重叠curses窗口的示例

我正在寻找一个如何curses.panel用来维护重叠窗口的例子.

python curses python-curses

2
推荐指数
1
解决办法
5837
查看次数

使用 npyscreen 在表单之间传递值

我正在尝试npyscreen在 python 中创建一个简单的curses应用程序,该应用程序请求用户在一个屏幕上输入,然后在另一个屏幕上为用户验证它。

大多数情况下,这是为了理解如何在 内部存储和检索值npyscreen。我确信我错过了一些简单的东西,但我无法在文档中找到(或理解?)答案。

下面的示例代码将无法正确传递值:

#!/usr/bin/env python3.5

import npyscreen as np

class EmployeeForm(np.Form):
    def afterEditing(self):
        self.parentApp.switchForm('CONFIRMFM')

    def create(self):
        self.myName = self.add(np.TitleText, name='Name')
        self.myDepartment = self.add(np.TitleSelectOne, scroll_exit=True, max_height=3, name='Department', values = ['Department 1', 'Department 2', 'Department 3'])
        self.myDate = self.add(np.TitleDateCombo, name='Date Employed')

class EmployeeConfirmForm(np.Form):
    def afterEditing(self):
        self.parentApp.setNextForm(None)

    def create(self):
        self.value = None
        self.wgName   = self.add(np.TitleText, name = "Name:",)
        self.wgDept = self.add(np.TitleText, name = "Dept:")
        self.wgEmp      = self.add(np.TitleText, name = "Employed:")

    def beforeEditing(self):
        if self.value:
            self.name = …
Run Code Online (Sandbox Code Playgroud)

python-curses

2
推荐指数
1
解决办法
3456
查看次数

Python诅咒:使Enter键终止Textbox吗?

我有一个要求人们输入用户名和密码的应用程序。我希望他们能够仅按Enter键即可发送名称和密码。为此,我做到了:

import curses, curses.textpad
def setup_input():
    inp = curses.newwin(8,55, 0,0)
    inp.addstr(1,1, "Please enter your username:")
    sub = inp.subwin(2,1)
    sub.border()
    sub2 = sub.subwin(3,2)
    global tb
    tb = curses.textpad.Textbox(sub2)
    inp.refresh()
    tb.edit(enter_is_terminate)

def enter_is_terminate(x):
    if x == 10:
        tb.do_command(7)
    tb.do_command(x)

setup_input()
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不能按预期工作。终止的标准字符(由CTRL + G触发)为7,输入字符为10,但是使用上面的代码,所有其他键仍然可以正确处理,但是当我按Enter键时,它只是给我换行符,而不是终止文本框的编辑模式。我究竟做错了什么?

python curses ncurses python-curses

2
推荐指数
2
解决办法
1211
查看次数

如何将Rich与Python的curses集成?

我正在考虑使用 pythoncursesrich库创建一个 CLI 应用程序。由于curses需要addstr将文本打印到字符串的方法,我无法使用rich. 是否可以集成这两个库?

以下代码不起作用!

import curses
from curses import wrapper
from rich.console import Console
console = Console()
with console.capture() as capture:
    console.print("[bold red]Hello[/] World")
str_output = capture.get()

def main(stdscr):
    stdscr.clear()
    stdscr.addstr(str_output)
    stdscr.refresh()
    stdscr.getch()

wrapper(main)
Run Code Online (Sandbox Code Playgroud)

python curses python-curses rich

1
推荐指数
1
解决办法
1607
查看次数

标签 统计

python-curses ×5

python ×4

curses ×3

ncurses ×2

rich ×1