Я написал небольшой сценарий, который действует как заставка. У меня все работает так, как я хочу, за исключением одной детали. У меня есть проверка в начале программы, чтобы увидеть, сколько столбцов доступно. Строка:
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))