首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >shutil.get_terminal_size()不改变

shutil.get_terminal_size()不改变
EN

Stack Overflow用户
提问于 2018-10-07 07:46:04
回答 1查看 510关注 0票数 3

我正在使用诅咒打印一个相当好的控制台用户界面,我需要一些东西是取决于终端的大小。为此,我阅读了here,我可以使用shutil.get_terminal_size。所以我在做这个代码:

代码语言:javascript
复制
def display(self):
    size_x,size_y = shutil.get_terminal_size()
    print(size_x,size_y)
    window_stat = curses.newwin(size_y,size_x//2-5,0,0)
    window_alert = curses.newwin(size_y,size_x//2-5,0,size_x//2+5)
    window_alert.addstr("\n   " + self.alert2string())
    window_stat.addstr("\n   " + self.stat2string())
    window_alert.box()
    window_stat.box()
    self.stdscr.refresh()
    window_stat.refresh()
    window_alert.refresh()

但是快速的是,当我第一次调用这个函数时,它工作得很好,但是如果我用鼠标改变终端大小并回忆这个函数,那么shutil.get_terminal_size()的结果将始终保持不变。(120 30)。

你知道它从哪里来吗?(我实际上在运行Windows,我希望它能在所有普通操作系统下运行)

非常感谢大家!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-07 10:33:17

基本上,这是因为使用shutils的应用程序(在本例中)使用Windows来创建一个具有固定大小的缓冲区。在更传统的类似Unix的应用程序中(而不是在高级别和可移植的shutuils尝试中),可以使用SIGWINCH处理程序通知应用程序大小的变化。在Windows环境下,您必须从事件循环(事件循环)中获得这一点--事件循环被shutils接口完全掩盖了。

它碰巧与Unix“一起工作”,因为shutils并不需要真正注意这些通知。操作系统的终端驱动程序(通常)可以返回更新的信息。

您可以针对shutils提交一份bug报告,以使其开发人员在设计时考虑到这一点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52686458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档