用于基于curses的UI的滑块

Fru*_*unt 6 python volume ncurses slider

作为一个学习项目,我想开始为我想到的程序制作一个基于ncurses的UI,用python编写.

在查看了urwid文档之后,我无法看到创建一个可以使用鼠标调整的简单滑块(我需要它来制作音量滑块).

我在urwid中遗漏了什么,或者是否有更方便的curses模块来制作这样的滑块?

jsb*_*eno 2

Curses 具有非常低级的 API - 可以追溯到 1980 年代的 C' 编程。

Python 包装器对键盘输入和其他一些细节有一些更高级别的支持,但它们很少且分散,并且没有很好的文档记录。

Python 的优点不包括鼠标支持(好吧,你可以将鼠标状态返回到一个元组中,而不必为此创建一个 C 结构,所以它更好一些)。

这个想法是,必须启用一个curses窗口启用“键盘”,以便Python为您提供完整的按键代码启用“鼠标掩码”,以便将鼠标事件发送到您的应用程序在getch函数中检测特殊的“mouse_key”键盘代码,以便您可以调用“getmouse”来获取坐标和按钮状态。

因此,没有预先制作好的回调,您必须设置应用程序的主循环来检测您自己的鼠标事件。

此示例代码执行上述步骤来读取鼠标事件并将鼠标状态打印到屏幕上 - 它应该足以让人们开始使用curses构建一些有用的鼠标处理:

# -*- coding: utf-8 -*-
import curses

screen = curses.initscr()
curses.noecho()
curses.mousemask(curses.ALL_MOUSE_EVENTS)

screen.keypad(1)

char = ""

try:
    while True:
        char = screen.getch()

        screen.addstr( str(char) + " ")
        if char == curses.KEY_MOUSE:
            screen.addstr (" |" + str(curses.getmouse()) + "| ")

finally:
    screen.keypad(0)
    curses.endwin()

    curses.echo()
Run Code Online (Sandbox Code Playgroud)