python 有没有其他的curses模块可以在windows中使用?我在 python 文档中查找,但其中提到它用于在 unix 中使用。我对这些不太熟悉,所以有没有办法在 windows 中使用 curses 模块,或者有一些专门用于 windows 的类似模块?[我正在使用 Python 3.3]
7 回答
我很高兴地报告,现在有一个 Windows 版本的 Curses 可作为 Windows 上的 Python 的扩展,来自这里。(不是我写的,也不知道是谁维护的。)
您可以运行安装程序,并import curses
让 curses 运行。(已在 64 位 Windows 7 和 Windows 8 上验证。)
@ArtOfWarfare 指出,您可以通过 Pip 安装它,并带有以下推荐:
pip install http://www.lfd.uci.edu/~gohlke/pythonlibs/xugyqnq9/curses-2.2-cp27-none-win32.whl
最初的问题是在 Windows 上是否有替代诅咒的方法。
一种答案是使用Win32 控制台 API。如果您已经熟悉控制台 API,则可以使用出色的 pywin32 包直接在 Python 中进行编程。
但是,我发现这对于我最近的项目来说太低了。我也不太热衷于强迫我的用户构建/安装 PDcurses,此外,我还发现对于像 Python 这样的现代 OO 语言来说,curses 的级别太低了。
因此,我整合了一个高级跨平台 API 来完成大多数人想要从他们的终端/控制台完成的所有事情。asciimatics包将满足您的大部分输入和输出需求。如果您使用的是 Linux,这是一种更人性化的 curses 编程方式。如果您在 Windows 上,则相同的类可以正常工作,没有外部二进制依赖项。请参阅下面的示例屏幕截图:
您可以在图库中找到许多其他可用的效果和小部件,但如果您需要额外的功能,请告诉我,我会看看我能做些什么。
那你恐怕就不走运了。没有真正的跨平台版本或curses / ncurses端口,有一个“对话”端口可以工作,但功能有限。
最好的办法是运行 CygWin 或 MinGW32,用“松散的术语”来说,两者都是 Linux 系统+终端仿真器,其中包含您需要的许多二进制文件。他们可以在终端内运行本机 Linux/Unix 二进制文件并随时访问您的“主机”系统文件,所以这就像用一个踢屁股的终端为 Windows 打补丁,里面装满了您来自 Linux 世界的所有好东西。你仍然需要一些 Linux 的基本知识以及命令等如何工作,但你会弄明白的。
这是一个 Pyglet GUI 示例:
import pyglet
from pyglet.gl import *
class main (pyglet.window.Window):
def __init__ (self):
super(main, self).__init__(800, 600, fullscreen = False)
self.button_texture = pyglet.image.load('button.png')
self.button = pyglet.sprite.Sprite(self.button_texture)
## --- If you'd like to play sounds:
#self.sound = pyglet.media.load('music.mp3')
#self.sound.play()
self.alive = 1
def on_draw(self):
self.render()
def on_close(self):
self.alive = 0
def on_mouse_press(self, x, y, button, modifiers):
if x > self.button.x and x < (self.button.x + self.button_texture.width):
if y > self.button.y and y < (self.button.y + self.button_texture.height):
self.alive = 0
def on_key_press(self, symbol, modifiers):
if symbol == 65307: # [ESC]
self.alive = 0
def render(self):
self.clear()
self.button.draw()
self.flip()
def run(self):
while self.alive == 1:
self.render()
# -----------> This is key <----------
# This is what replaces pyglet.app.run()
# but is required for the GUI to not freeze
#
event = self.dispatch_events()
x = main()
x.run()
这是该代码的输出:
以下是如何通过 pip在他们的答案中安装ashes999 链接的内容:
pip install http://www.lfd.uci.edu/~gohlke/pythonlibs/xugyqnq9/curses-2.2-cp27-none-win32.whl
这可能应该被添加到 PyPI 以使 pip 安装更加容易(因此它可以通过名称而不是 URL 安装。)
你可以试试这个。我曾经为此做过Win64端口(在那里合并)。但是,您需要编写一些不同的 Python 代码。这会将所有 curses 调用重定向到 UNIX 上的本机 Python 版本,但在 Windows 上调用 PDCURSES.DLL(单独下载 DLL)。据我记得它支持unicode:
这不是一个新的解决方案,只是对前一个解决方案的编辑。
如果pip命令出现 404 错误,您可以尝试从http://www.lfd.uci.edu/~gohlke/pythonlibs/#curses下载数据包 ,然后编写类似
pip install C:\..packetPath..\curses-2.2-cp35-none-win_amd64.whl
官方文档提出以下建议(在段落底部):
Windows 版本的 Python 不包含curses模块。有一个名为UniCurses的移植版本可用。您还可以尝试Fredrik Lundh 编写的 Console 模块,它不使用与 curses 相同的 API,但提供光标可寻址的文本输出和对鼠标和键盘输入的完全支持。