【问题标题】:How to Enable Scrolling for Python Console Application如何为 Python 控制台应用程序启用滚动
【发布时间】:2016-07-20 09:45:30
【问题描述】:

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

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

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

在这一点上,我完全被卡住了。因此,如果有人知道如何让滚动工作,我将非常感谢您的帮助。

【问题讨论】:

  • 右键单击 Python 控制台窗口的右上角并选择“属性”并在出现的对话框中配置窗口大小和屏幕缓冲区大小 - 然后再次尝试 --help
  • @martineau 感谢您的建议。不幸的是,我已经尝试了几次,结果仍然相同。这实际上就是我最初为控制台配置属性的方式。一旦我再次运行--help 或执行另一个与Python 相关的命令,滚动条就会消失并且我无法滚动。您还有其他建议吗?
  • @martineau 哦,我应该提到,当我更改控制台属性时,我尝试了普通控制台和具有管理员权限的控制台......但我仍然得到完全相同的结果。如果我再次打开控制台属性,设置仍然设置为我更改的值。所以控制台设置持续存在的,但由于某种原因,它们在执行 Python 命令时没有影响。
  • 尝试创建C:\Python\python.exe 的桌面快捷方式并设置 属性(而不是python.exe 本身的属性)。
  • @martineau 我应该更改 python.exe 的属性吗?如果是这样,那可能是我的问题......因为我正在从我的 Windows 控制台(命令提示符 - cmd.exe)运行我的脚本和--help 命令。这就是我在 Windows 中一直这样做的方式。

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


【解决方案1】:

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

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

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

import os
os.system('mode horizontalSizeInNumber or horizontalSizeInNumber_setToZero and verticalSizeInNumber')

在上面写的代码之前添加这段代码。

【讨论】:

    【解决方案2】:

    你不能从你的 python 脚本中做到这一点(好吧,这是可能的,但很可能你不想这样做)。滚动取决于环境(Windows 或 Linux 终端,没关系)。因此,由用户以对他们有利的方式进行设置。

    在 Linux 上,您可以使用 lessmore:
    python script.py | less
    它将缓冲脚本的输出,并让用户能够上下滚动而不会丢失任何信息。

    【讨论】:

    • 感谢您的回复。是的,我熟悉如何在 Linux 中做到这一点。而且我能够配置我的 Windows 控制台以允许我很好地滚动......但由于某种原因,当我开始执行 Python 命令和/或脚本时,没有应用控制台配置。我检查了属性设置是否被重置或其他东西,它们不是。所有属性更改都应保持不变,但我仍然得到相同的行为。还有其他建议吗?
    • 你知道如何在 Python 中设置必要的属性吗?我知道这可能不是理想的解决方案。但在这一点上,我需要一些东西作为解决方法,直到我能找到一个永久的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 2010-10-30
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    相关资源
    最近更新 更多