因此,我刚刚安装了Urwid,并作为测试尝试运行相当于基本打印命令的Urwid,如Urwid网站教程中的示例所示。我收到一条错误消息。
我尝试运行其中一个不同的示例,并收到类似的错误消息。代码如下所示:
import urwid
txt = urwid.Text(u"Hello World")
fill = urwid.Filler(txt, 'top')
loop = urwid.MainLoop(fill)
loop.run()
它应该在屏幕的左上角打印'Hello World‘,然后运行,直到被指示退出。相反,我得到了这个错误消息:
Traceback (most recent call last):
File "C:\Users\Rory Kranz\AppData\Local\atom\app-1.34.0\testingg", line 5, in <module>
loop = urwid.MainLoop(fill)
File "C:\Users\Rory Kranz\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urwid\main_loop.py", line 114, in __init__
screen = raw_display.Screen()
File "C:\Users\Rory Kranz\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urwid\raw_display.py", line 92, in __init__
fcntl.fcntl(self._resize_pipe_rd, fcntl.F_SETFL, os.O_NONBLOCK)
NameError: name 'fcntl' is not defined
是安装出了什么问题,还是需要安装其他东西才能让Urwid正常工作?
发布于 2019-01-25 10:01:51
如果你想使用urwid,你需要将它与cygwin一起使用(不确定mingw是否支持它,但如果这是你的偏好,可能值得一试)。
win32本身并不支持fcntl接口,显然,使用Windows函数模拟它也不是一件容易的事。
如果您想继续使用windows而不使用unix仿真环境,您可以尝试使用curses或python prompt toolkit。我不确定这些是不是最好的选择,因为我不清楚你到底想做什么。
一些相关链接
https://stackoverflow.com/questions/54357073
复制相似问题