在Windows中使用python的curses模块有什么替代方法吗?我查看了python文档,但是它提到了它在unix中的使用.我对这些不是很熟悉,所以有没有办法在windows中使用curses模块或者是否有一些专门用于windows的类似模块?[我使用的是Python 3.3]
ash*_*999 73
我很高兴地报告,现在有一个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
Run Code Online (Sandbox Code Playgroud)
Pet*_*ain 26
最初的问题是Windows上是否有替代 curses 的方法.
一个答案是使用Win32控制台API.如果您已经熟悉控制台API,可以使用优秀的pywin32软件包直接在Python中编程.
但是,我发现这个项目的水平太低了.我也不太热衷于强迫我的用户构建/安装PDcurses,此外,我也发现curses对于像Python这样的现代OO语言来说太低了.
因此,我将高级跨平台API组合在一起,以便从终端/控制台执行大多数人想要的所有操作.该asciimatics包将提供大部分的输入和输出需求.如果你在Linux上,这是一种更人性化的诅咒编程方式.如果您使用的是Windows,那么同一个类的工作原理就是没有外部二进制依赖项.请参阅下面的示例屏幕截图:
您可以在图库中找到许多其他效果和小工具,但如果您需要额外的功能,请告诉我,我会看到我能做些什么.
那么你恐怕不幸.没有真正的跨平台版本或curses/ncurses端口,有一个"对话"端口可以工作,但它的功能有限.
你最好的选择是运行CygWin或MinGW32,两者都是"松散术语",Linux系统+终端模拟器,它有很多你需要的二进制文件.它们可以运行在终端内部原生的Linux/Unix的二进制文件,并随时访问您的"主机"系统文件,因此它就像用你所有的好东西,从Linux世界踢屁股终端补丁的Windows.你仍然需要一些Linux的基本知识以及命令等的工作原理,但你会弄明白的.

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()
Run Code Online (Sandbox Code Playgroud)
这是该代码的输出:

以下是如何通过 pip 安装ashes999 在其答案中链接的内容:
pip install http://www.lfd.uci.edu/~gohlke/pythonlibs/xugyqnq9/curses-2.2-cp27-none-win32.whl
Run Code Online (Sandbox Code Playgroud)
这可能应该添加到 PyPI 中,以便使用 pip 进行安装变得更加容易(因此可以通过名称而不是 URL 进行安装。)