方框绘图字符界面的问题
Issues with box drawing character interface
我正在开发终端音乐播放器。我几乎制作了方框绘图界面。
如您所见,我打破了右边框 ("║"
)。我试着做到了。但是出了点问题,它不起作用。看看我的代码:
import vlc
import glob
import sys
from termcolor import colored, cprint
def scanfolder(directory, extension):
sfile = glob.glob(f'{directory}*.{extension}')
box1 = colored("║", "yellow", attrs=["bold"])
box2 = colored("╚", "yellow", attrs=["bold"])
box3 = colored("═", "yellow", attrs=["bold"])
box4 = colored("╔", "yellow", attrs=["bold"])
box5 = colored("╗", "yellow", attrs=["bold"])
box6 = colored("╝", "yellow", attrs=["bold"])
x = len(directory)
y = len(extension) + 1
z = len(max(sfile, key=len))
z = z - x - y + 3
box3 = box3 * z
print(box4 + box3 + box5)
for i, track in enumerate(sfile):
trackEn = box1 + str(i + 1) + ". " + str(track[x:-y])
indent = " "
mFactor = z - len(trackEn) #z is the most long track name length, len(trackEn) is any other track's length
indent = indent * mFactor #space * mFactor, used to align box drawing character ║, so they can make one solid wall
print(trackEn + indent + box1) #track name + aligning spaces + ║
print(box2 + box3 + box6)
sext = input("Choose extension: ")
sdir = input("Choose directory: ")
cprint("""
________ ________ ______
___ __ \_____ _____ __ \___ /______ ______ __
__ /_/ /__ / / /__ /_/ /__ / _ __ `/__ / / /
_ ____/ _ /_/ / _ ____/ _ / / /_/ / _ /_/ /
/_/ _\__, / /_/ /_/ \__,_/ _\__, /
/____/ /____/ """, "yellow", "on_blue", attrs=["bold"])
scanfolder(sdir, sext)
chooseTrack = colored("Choose track", "green", attrs=["bold"])
colon = colored(": ", "green", attrs=["bold", "blink"])
trackn = input(chooseTrack + colon)
Question: Issues with box drawing character using termcolor.colored
symbols.
问题是从 termcolor.colored
返回的 box1
变量。
此字符串 box1
已使用 ANSI
颜色序列进行格式化,例如\E231║
.
因此 len(trackEn)
给出 6
更多结果 mFactor = z - len(trackEn) == -6
.
您的 mFactor
变为负数,因此 no indent
.
Change the following:
for i, track in enumerate(sfile):
trackEn = str(i + 1) + ". " + str(track[x:-y])
# z is the most long track name length, len(trackEn) is any other track's length
mFactor = z - len(trackEn)
# space * mFactor, used to align box drawing character ║,
# so they can make one solid wall
indent = " " * mFactor
# ║ + track name + aligning spaces + ║
print(box1 + trackEn + indent + box1)
我正在开发终端音乐播放器。我几乎制作了方框绘图界面。
如您所见,我打破了右边框 ("║"
)。我试着做到了。但是出了点问题,它不起作用。看看我的代码:
import vlc
import glob
import sys
from termcolor import colored, cprint
def scanfolder(directory, extension):
sfile = glob.glob(f'{directory}*.{extension}')
box1 = colored("║", "yellow", attrs=["bold"])
box2 = colored("╚", "yellow", attrs=["bold"])
box3 = colored("═", "yellow", attrs=["bold"])
box4 = colored("╔", "yellow", attrs=["bold"])
box5 = colored("╗", "yellow", attrs=["bold"])
box6 = colored("╝", "yellow", attrs=["bold"])
x = len(directory)
y = len(extension) + 1
z = len(max(sfile, key=len))
z = z - x - y + 3
box3 = box3 * z
print(box4 + box3 + box5)
for i, track in enumerate(sfile):
trackEn = box1 + str(i + 1) + ". " + str(track[x:-y])
indent = " "
mFactor = z - len(trackEn) #z is the most long track name length, len(trackEn) is any other track's length
indent = indent * mFactor #space * mFactor, used to align box drawing character ║, so they can make one solid wall
print(trackEn + indent + box1) #track name + aligning spaces + ║
print(box2 + box3 + box6)
sext = input("Choose extension: ")
sdir = input("Choose directory: ")
cprint("""
________ ________ ______
___ __ \_____ _____ __ \___ /______ ______ __
__ /_/ /__ / / /__ /_/ /__ / _ __ `/__ / / /
_ ____/ _ /_/ / _ ____/ _ / / /_/ / _ /_/ /
/_/ _\__, / /_/ /_/ \__,_/ _\__, /
/____/ /____/ """, "yellow", "on_blue", attrs=["bold"])
scanfolder(sdir, sext)
chooseTrack = colored("Choose track", "green", attrs=["bold"])
colon = colored(": ", "green", attrs=["bold", "blink"])
trackn = input(chooseTrack + colon)
Question: Issues with box drawing character using
termcolor.colored
symbols.
问题是从 termcolor.colored
返回的 box1
变量。
此字符串 box1
已使用 ANSI
颜色序列进行格式化,例如\E231║
.
因此 len(trackEn)
给出 6
更多结果 mFactor = z - len(trackEn) == -6
.
您的 mFactor
变为负数,因此 no indent
.
Change the following:
for i, track in enumerate(sfile):
trackEn = str(i + 1) + ". " + str(track[x:-y])
# z is the most long track name length, len(trackEn) is any other track's length
mFactor = z - len(trackEn)
# space * mFactor, used to align box drawing character ║,
# so they can make one solid wall
indent = " " * mFactor
# ║ + track name + aligning spaces + ║
print(box1 + trackEn + indent + box1)