首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测乳酸菌下屏幕尺寸的调整

如何检测乳酸菌下屏幕尺寸的调整
EN

Stack Overflow用户
提问于 2022-04-05 08:49:27
回答 1查看 75关注 0票数 1

这个小片段将在屏幕右下角显示h x w

代码语言:javascript
复制
from asciimatics.screen import Screen
import time

def print_dims(screen):
    (h, w) = screen.dimensions
    screen.print_at("%3d x %3d" % (h, w), w - 12, h - 1, Screen.COLOUR_BLUE, Screen.A_NORMAL)

def demo(screen):
    print_dims(screen)
    while True:
        if screen.has_resized():   # never triggered
            print_dims(screen)
        ev = screen.get_key()
        if ev in (ord('Q'), ord('q')):
            return
        time.sleep(0.1)
        screen.refresh()

Screen.wrapper(demo)

Situation

print_dims()的第一次调用运行良好。

当我调整窗口的大小时,屏幕上的所有东西都会被清除掉。循环中的screen.has_resized()从未被触发。但是程序仍然在运行,因为'Q‘将正确退出。

Python运行在Linux上,我使用来自MacOS (TERM="xterm-256color")的ssh/iTerm2访问Linux。

请求协助

现在,我需要一个健全的检查。

我不知道我的代码、我的终端程序是否出了问题,或者诅咒是否没有用调整大小的信号来编译。iTerm2 on MacOS可能是可以的,因为当我在另一个窗口中运行vim并调整iTerm2窗口的大小时,vim确实识别了调整大小。

有没有人得到他们的系统来检测screen.has_resize()在腹水中?如果是这样的话,请分享你的片段和分享你的环境,这样我就可以缩小我做错了什么。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-07 20:22:22

这是个微妙的问题。屏幕将保持其尺寸,直到您重新创建它。您的代码正在被触发,但是将相同的内容打印到双缓冲区,因此不会在刷新时更新。

您只需允许调整屏幕对象的大小即可。例如..。

代码语言:javascript
复制
from asciimatics.screen import Screen
import time
import sys

def print_dims(screen):
    (h, w) = screen.dimensions
    screen.print_at("%3d x %3d" % (h, w), w - 12, h - 1, Screen.COLOUR_BLUE, Screen.A_NORMAL)

def demo(screen):
    print_dims(screen)
    while True:
        if screen.has_resized():
            return
        print_dims(screen)
        ev = screen.get_key()
        if ev in (ord('Q'), ord('q')):
            sys.exit(0)
        time.sleep(0.1)
        screen.refresh()

def main():
    while True:
        Screen.wrapper(demo)

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

https://stackoverflow.com/questions/71748769

复制
相关文章

相似问题

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