如何为Python控制台应用程序启用滚动

时间:2016-03-31 19:18:05

标签: python python-2.7 scroll console-application windows-console

我有一个Python(2.7)控制台应用程序,我在Windows(8.1)上编写过。我在执行程序时使用了argparse.ArgumentParser()来处理参数。

应用程序有很多参数,因此当使用--help参数时,文档大大超出了控制台窗口的大小。即使控制台窗口最大化。这很好,但我遇到的问题是用户无法向上滚动查看其余的帮助文档。我已经适当地配置了我的Windows控制台属性,例如"窗口大小"和"屏幕缓冲区大小"。我已经验证了这些更改是有效的,但它们只能在Python环境之外工作。只要我执行Python脚本或为脚本运行--help命令,控制台属性就不再适用。滚动条将从窗口中消失,我无法再滚动到顶部以查看之前的内容。

基本上,我需要弄清楚如何为我的Python控制台程序启用滚动。我在执行脚本和查看--help文档时都需要启用滚动功能。我不知道该怎么做。我一直在网上搜索有关该主题的任何信息,我还没有找到任何有用的东西。

此时,我完全陷入困境。因此,如果有人知道如何滚动工作,我将非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

你不能从你的python脚本中做到(好吧,有可能,但很可能你不想这样做)。滚动取决于环境(Windows或Linux终端,无所谓)。因此,用户可以通过对他们有益的方式进行设置。

在Linux上,您可以使用lessmore
python script.py | less
它将缓冲脚本的输出,并允许用户在不丢失任何信息的情况下向上和向下滚动。

答案 1 :(得分:0)

这是我的朋友,允许在两个维度上滚动。

def home(request):
group = Group.objects.all()
form = GroupForm()
if request.method == 'POST':
    form = GroupForm(request.POST)
    if form.is_valid():
        obj = form.save(commit=False)
        obj.vehicles = form.cleaned_data['vehicles']
        obj.save()
    return redirect('/')

context = {'group': group, 'form': form}
return render(request, 'calculator/Input.html', context)

如果您想修复在任意一侧滚动,

from ctypes import windll, byref
from ctypes.wintypes import SMALL_RECT

WindowsSTDOUT = windll.kernel32.GetStdHandle(-11)
dimensions = SMALL_RECT(-1, -1, 89, 28) # (left, top, right, bottom)
# Width = (Right - Left) + 1; Height = (Bottom - Top) + 1
windll.kernel32.SetConsoleWindowInfo(WindowsSTDOUT, True, byref(dimensions))  

在上述书面代码之前添加这段代码。