3回答

0收藏

[经验] 使用 Python Newt 的笔记

Raspberry Pi Raspberry Pi 5115 人阅读 | 3 人回复 | 2013-06-30

本帖最后由 lawme 于 2013-6-30 12:40 编辑

1、问题的由来

RPi 的 GUI 太慢的问题,要等待 Wayland 来解决。

还有个选择,用 TUI 在一些场合代替 GUI。

TUI 是指“文本用户界面”,例如 raspi-config 的工作界面。

Linux 有实现 TUI 的系统命令,whiptail。

在 Raspbian 平台上,我从网上找了些用例,试了试 whiptail。

结果不怎么样,几乎不能正常工作。并且,如果处理复杂些的任务,

必须掌握 bash 的 script 语言,是件枯燥乏味的事情。

于是,上网查询,找到了 newt。

我猜想,newt 的意思是 new whiptail,有点英文的文字游戏。

newt 原生于 C 语言。C 处理 text 不是强项,甚至烦琐吃力。

继续查找,终于找到了 Python 对它的封装,并且是 Raspbian 平台的。

2、安装

找来的文件是 python-newt_0.52.14-11.1_armhf.deb

安装命令是 dpkg -i python-newt_0.52.14-11.1_armhf.deb

3、扩展 Python

我遇到了点小麻烦:

greenlet.h:8:20: 致命错误: Python.h:没有那个文件或目录,编译中断。

error: Setup script exited with error: command 'gcc' failed with exit status 1

解决方法是安装python-dev,这是Python的头文件和静态库包:

sudo apt-get install python-dev

之后,再次安装 pynewt 成功。

4、小小尝试

平时,常用 omxplayer 播放 mp3, mp4。

在终端上键盘操作比较费事,想省点气力,写了下面的 script。

它把指定目录中的mp3,mp4文件,置入 TUI 的 listbox中,用户

以方向键、回车键选择、确认就行了。

退出时,选择按钮“Exit”。

不能用鼠标,不是事件驱动的,那是 GUI 的事情。

import os,sys
from snack import *

lid = os.listdir('/home/pi/mp')
li3,li4 = [],[]

for a in lid:
    if a[-4:]=='.mp3':
        li3.append(a)
    elif a[-4:]=='.mp4':
        li4.append(a)

li3.sort()
li4.sort()

lid = []
for a in li3:
    lid.append(a)
lid.append('-'*30)
for a in li4:
    lid.append(a)

while True:

    screen = SnackScreen()
    li = Listbox(height = 16, width = 40, returnExit = 1)

    n = 1
    for a in li3:
        li.append(a,n)
        n += 1

    li.append('-'*30,n)

    n += 1
    for a in li4:
        li.append(a,n)
        n += 1

    bb = ButtonBar(screen, (("Exit","ok"),))

    g = GridForm(screen, "Audio and Video", 1, 4)
    g.add(li, 0, 0)
    g.add(bb, 0, 3, growx = 1)

    result = g.runOnce()

    if bb.buttonPressed(result) == 'ok':
        break

    if lid[li.current()-1] == '-'*30:
        continue

    command = 'omxplayer /home/pi/mp/'+lid[li.current()-1]
    os.system(command)
    os.system('clear')

screen.finish()


分享到:
回复

使用道具 举报

回答|共 3 个

倒序浏览

沙发

wyyyh

发表于 2013-6-30 17:44:19 | 只看该作者

本帖最后由 wyyyh 于 2013-6-30 20:02 编辑

sudo apt-get install python-newt


顶一个,哪儿能看点例子呢
板凳

riceroad

发表于 2013-7-1 07:13:57 | 只看该作者

上传文件 examples.7z

我学编程,一直是以example为样本,比着葫芦画瓢。

examples.7z

34.05 KB, 下载次数: 6

地板

woaidabaobao

发表于 2013-7-1 09:39:43 | 只看该作者

笔记不错,顶一个!
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条