我正在使用诅咒打印一个相当好的控制台用户界面,我需要一些东西是取决于终端的大小。为此,我阅读了here,我可以使用shutil.get_terminal_size。所以我在做这个代码:
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,我希望它能在所有普通操作系统下运行)
非常感谢大家!
发布于 2018-10-07 10:33:17
基本上,这是因为使用shutils的应用程序(在本例中)使用Windows来创建一个具有固定大小的缓冲区。在更传统的类似Unix的应用程序中(而不是在高级别和可移植的shutuils尝试中),可以使用SIGWINCH处理程序通知应用程序大小的变化。在Windows环境下,您必须从事件循环(事件循环)中获得这一点--事件循环被shutils接口完全掩盖了。
它碰巧与Unix“一起工作”,因为shutils并不需要真正注意这些通知。操作系统的终端驱动程序(通常)可以返回更新的信息。
您可以针对shutils提交一份bug报告,以使其开发人员在设计时考虑到这一点。
https://stackoverflow.com/questions/52686458
复制相似问题