在Windows中,有没有Python的curses模块的替代品?我在Python文档中查找了一下,但是只提到可以在Unix中使用。由于我对此不太熟悉,所以是否有一些方法可以在Windows中使用curses模块,或者是否有一些专门针对Windows的类似模块? [我正在使用Python 3.3]
很高兴地报告,现在有一个 Windows 版本的 Curses 扩展可以供 Python 在 Windows 上使用,可以从这里下载。(我没有编写它,也不知道谁维护它。)
您可以运行安装程序,并使用 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
whl
文件仍然存在。例如:http://www.lfd.uci.edu/~gohlke/pythonlibs/f9r7rmd8/curses-2.2-cp36-cp36m-win32.whl
。 - ashes999原问题是在windows上是否有与curses相似的技术 替代方案。
一个答案是使用Win32控制台API。 如果您已经熟悉控制台API,可以直接使用优秀的pywin32包在Python中编程。
然而,我发现这对于我的最近项目来说太低级了。 我也不想强迫我的用户构建/安装PDcurses,并且除此之外,我还觉得像Python这样的现代面向对象语言的curses过于低级。
因此,我组合了一个高级跨平台API,可满足大多数人对其终端/控制台的需求。 asciimatics包将提供大部分的输入和输出需求。如果您使用Linux,这就是一种更加人性化的编程curses的方式。如果您正在使用Windows,则同一类别可以工作,无需外部二进制依赖项。请参见下面的示例截图:
还有许多其他的效果和小部件可用,您可以在画廊中找到它们,但如果您需要额外的功能,请告诉我,我会看看我能做什么。
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进行安装)。
pip install C:\..packetPath..\curses-2.2-cp35-none-win_amd64.whl
Windows 版本的 Python 不包括 curses 模块。 可以使用一个名为 UniCurses 的移植版本。您还可以尝试 Fredrik Lundh 编写的 Console 模块,它不使用与 curses 相同的 API,但提供光标可寻址的文本输出和完全支持鼠标和键盘输入。
Cygwin
吗? - salezica