Подтвердить что ты не робот

Альтернативная версия проклятий для окон

Есть ли альтернатива модуля curses для использования python в Windows? Я посмотрел в документации на python, но там упоминалось, что его для использования в unix. Я не очень хорошо знаком с ними, так есть ли способ использовать модуль curses в Windows или есть какой-то подобный модуль специально для Windows? [Я использую Python 3.3]

4b9b3361

Ответ 1

Тогда тебе не повезло, я боюсь. Там нет реальной кросс-платформенной версии или порта проклятий /ncurses, есть "диалоговый" порт, который работает, но он ограничен возможностями.

Лучше всего запустить CygWin или MinGW32, как в "свободных терминах", так и в эмуляторе Linux + терминал, который имеет большую часть необходимых вам двоичных файлов. Они могут запускать собственные исполняемые файлы Linux/Unix внутри терминала и в любое время получать доступ к вашим системным файлам "хоста", так что это, как исправление Windows с терминалом kick-ass со всеми вашими преимуществами из мира Linux. Вам все равно понадобятся некоторые базовые знания о Linux и о том, как работают команды и т.д., Но вы поймете это.

Screenshot of MinGW and CygWin

Здесь пример GUI Pyglet:

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()

Здесь вывод этого кода:

enter image description here

Ответ 2

Я рад сообщить, что теперь существует сборка Curses для Windows, доступная как расширение для 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

Ответ 3

Исходный вопрос заключался в том, есть ли альтернатива проклятиям в Windows.

Один из ответов заключается в использовании API консоли Win32. Вы можете запрограммировать это прямо на Python, используя отличный пакет pywin32, если вы уже знакомы с консольным API.

Однако я нашел этот слишком низкий уровень для моего недавнего проекта. Я также был менее заинтересован в том, чтобы заставить моих пользователей создавать/устанавливать PDcurses, и, кроме того, я также нахожу проклятия слишком низкого уровня для современного языка OO, такого как Python.

Поэтому я собрал высокоуровневый межплатформенный API, чтобы делать все, что большинство людей хочет от своего терминала/консоли. Пакет asciimatics обеспечит большую часть ваших потребностей ввода и вывода. Если вы работаете в Linux, это более человечный способ программирования проклятий. Если вы работаете в Windows, тот же класс работает, как и без внешних двоичных зависимостей. Ниже приведен пример скриншота:

Пример вывода

Есть много других доступных эффектов и виджетов, которые вы можете найти в галерее но если вам нужна дополнительная функция, сообщите мне и я посмотрю, что я могу сделать.

Ответ 4

Здесь, как установить на что ссылается ashes999 в своем ответе через pip:

pip install http://www.lfd.uci.edu/~gohlke/pythonlibs/xugyqnq9/curses-2.2-cp27-none-win32.whl

Это, вероятно, должно быть добавлено в PyPI, чтобы упростить установку с помощью pip (чтобы он мог быть установлен по имени, а не по URL.)

Ответ 5

Вы можете попробовать это. Я как-то сделал для этого Win64-порт (объединенный там). Однако вам нужно написать свой код Python немного иначе. Это перенаправит все вызовы curses на родную версию Python в UNIX, но вызовет PDCURSES.DLL в Windows (загрузите DLL отдельно). Насколько я помню, он поддерживает unicode:

http://sourceforge.net/projects/pyunicurses/

Ответ 6

Это не новое решение, просто редактирование предыдущего.

Если команда pip дает ошибку 404, вы можете попробовать загрузить пакет из http://www.lfd.uci.edu/~gohlke/pythonlibs/#curses  а затем напишите что-то вроде

pip install C:\..packetPath..\curses-2.2-cp35-none-win_amd64.whl

Ответ 7

Официальный документ предлагает следующее (здесь в нижней части абзаца):

Версия Python для Windows не включает модуль curses. Доступна портированная версия под названием UniCurses. Вы также можете попробуйте консольный модуль, написанный Fredrik Lundh, который не делает использовать тот же API, что и проклятия, но обеспечивает вывод текста с курсором и полная поддержка ввода мыши и клавиатуры.