Как динамически проверить, сколько столбцов доступно в окне терминала Python3 Linux - PullRequest
0 голосов
/ 18 апреля 2019

Я написал небольшой сценарий, который действует как заставка. У меня все работает так, как я хочу, за исключением одной детали. У меня есть проверка в начале программы, чтобы увидеть, сколько столбцов доступно. Строка:

rows, columns = os.popen('stty size', 'r').read().split()

Он выполняет свою работу, и все работает, если я сохраняю окно того же размера, но если я изменяю размер окна, мне нужно остановить программу и перезапустить ее, чтобы она передавала правильную информацию в мою функцию draw_lines ().

Я пробовал разные способы прикрепить его к циклу while, чтобы он каждый раз проверял размер окна, но я не нашел способа заставить это работать. Кто-нибудь здесь решал такую ​​проблему раньше?

#!/usr/bin/env python3
# Script Name - lines.py

from time import sleep
import os
import random
from termcolor import colored, cprint

sleep_time = .1
width = 80


os.system('clear')

def draw_lines(lines):
    while True:
        char  = ('|', '|', '|',  '*', '%', '$', '#', '@', '!',  '=', '+', )
        colors = ('red', 'red', 'yellow', 'yellow','magenta', 'grey','red', 'green', 'blue', 'yellow', 'white',)
        for i in range(lines//2+1):
            r = list(range(width))
            txt_color = random.choice(colors)
            for a in r:
                cprint(i*' '+ i*(random.choice(char)), txt_color)
            sleep(sleep_time)
        for i in reversed(range(lines//2+1)):
            txt_color = random.choice(colors)
            r = list(range(width))
            for b in r:
               cprint(i* ' ' + i*(random.choice(char)), txt_color)
            sleep(sleep_time)

rows, columns = os.popen('stty size', 'r').read().split()
draw_lines(int(columns))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...