푸터 콘텐츠로 바로가기
Iron Academy Logo
C# 애플리케이션
C# 애플리케이션

다른 카테고리

그룹이 포함된 다중 선택 목록 - Spectre 콘솔 시리즈

Tim Corey
6분 21초

Spectre Console은 일반 C# 콘솔 애플리케이션을 시각적으로 풍부하고 상호 작용 가능한 도구로 변환할 수 있도록 해주는 .NET 라이브러리입니다. 정적인 흑백 화면 대신 색상, 레이아웃 및 상호 작용 가능한 선택 사항을 통해 사용자에게 메시지를 표시할 수 있습니다. 이 글에서는 가장 강력한 입력 기능 중 하나인 다중 선택 프롬프트, 특히 선택 그룹 사용 방법에 대해 자세히 살펴보겠습니다.

우리는 Tim Corey의 비디오 " 그룹화를 이용한 다중 선택 목록 - Spectre 콘솔 시리즈 "에서 보여주는 단계별 안내를 따라 이 작업을 수행할 것입니다. 팀은 설명하고, 코드를 보여주고, 실행까지 해주므로 여러분은 이 방법을 자신의 프로젝트에 어떻게 적용할 수 있는지 알 수 있습니다. 아래 각 제목에는 해당 내용이 영상에서 나오는 대략적인 시간이 표시되어 있으므로, 해당 부분으로 바로 이동할 수 있습니다.

다중 선택 프롬프트 소개

비디오 시작 부분에서 Tim Corey는 Spectre Console을 사용하면 "C# 콘솔 앱을 시각적으로 매력적이고 유익한 애플리케이션으로 바꿀 수 있다"고 시청자에게 상기시킵니다(0:02). 그의 시리즈는 도서관을 10분 분량으로 조금씩 살펴봅니다. 이 특정 비디오는 다중 선택 프롬프트(0:18)를 사용하여 사용자가 목록 또는 여러 목록에서 하나 이상의 선택 항목을 선택하도록 요청하는 데 중점을 둡니다.

간단한 다중 선택 프롬프트 설정하기

팀은 먼저 자신의 코드에 이미 있는 두 개의 리스트를 보여줍니다.

List<string> usualNames = new() {
    "Tim Corey",
    "Sue Storm",
    "Bilbo Baggins",
    "John Doe",
    "Princess Donut",
    "Steve Rogers"
};

List<string> familyNames = new() {
    "Charity",
    "Jon",
    "Chris"
};
List<string> usualNames = new() {
    "Tim Corey",
    "Sue Storm",
    "Bilbo Baggins",
    "John Doe",
    "Princess Donut",
    "Steve Rogers"
};

List<string> familyNames = new() {
    "Charity",
    "Jon",
    "Chris"
};

(You can see these on screen at about 0:38.)

그는 목록을 만듭니다.사용자가 항목을 하나도 선택하지 않거나, 하나 선택하거나, 여러 개 선택할 수 있기 때문에 favoriteNames라고 부릅니다(0:53–1:01). 그런 다음, 그는 그것을 새로운 MultiSelectionPrompt를 사용하여 AnsiConsole.Prompt의 결과에 할당합니다.() (1:05–1:16).

Tim은 각 선택 항목이 문자열 객체가 될 것이며 프롬프트는 사용자가 선택한 항목의 배열 또는 목록을 반환할 것이라고 강조합니다(1:20–1:26).

그런 다음 사용자를 안내하기 위해 사용자 지정 제목을 추가합니다.

.Title("Which are your favorite placeholder names?")
.Title("Which are your favorite placeholder names?")

이렇게 하면 프롬프트 상단에 명확한 헤더가 표시됩니다(1:31~1:50).

사용자 안내를 위한 설명 텍스트 추가

팀은 단순히 직함에만 머무르지 않습니다. 그는 또한 사용자가 프롬프트와 상호 작용하는 방법을 알려주는 안내 텍스트를 추가합니다(1:50).

그는 대략 다음과 같이 씁니다:

.InstructionsText("(Press <space> to toggle, <enter> to accept)")
.InstructionsText("(Press <space> to toggle, <enter> to accept)")

1분 56초에 그는 색상이나 다른 스타일을 사용하여 서식을 지정할 수도 있다고 설명합니다. Spectre Console은 강조 색상을 사용자 지정할 수 있으므로 지침이 녹색, 파란색, 노란색, 회색 또는 빨간색으로 표시되어 주요 부분을 강조할 수 있습니다.

중요한 부분은 사용자에게 다음과 같이 알려주는 것입니다. 스페이스바를 눌러 항목을 전환하고, 엔터 키를 눌러 답변을 수락하세요 (2:12). 이렇게 하면 사용자가 스크립트를 쉽게 사용할 수 있습니다.

선택 항목 추가 및 결과 표시

다음으로 팀은 실제 데이터를 추가합니다. 처음에 그는 하나의 목록으로 간단하게 유지합니다. 그는 .AddChoices(usualNames)를 사용합니다(2:24–2:34).

그런 다음 그는 사용자의 선택 사항을 콘솔에 출력하기 위해 간단한 foreach 루프를 작성합니다(2:38–2:52).

foreach (var name in favoriteNames)
{
    Console.WriteLine(name);
}
foreach (var name in favoriteNames)
{
    Console.WriteLine(name);
}

그는 서식에 대해 걱정하지 않고, 단지 다중 선택 프롬프트가 제대로 작동하는지 보여주고 있을 뿐입니다(2:53–3:00).

Tim은 터미널에서 프로그램을 실행합니다(3:00). 프롬프트에는 그의 이름 목록이 표시됩니다. 그는 스페이스바를 사용하여 "Tim Corey"와 "Sue Storm"과 같은 몇 가지 항목을 선택한 다음 Enter 키를 누릅니다. 그러면 콘솔에 선택한 옵션이 출력됩니다(3:07~3:15). 이는 가장 간단한 작동 버전을 보여줍니다.

Spectre Console Multi Select Lists Groupings 1 related to 선택 항목 추가 및 결과 표시

선택 그룹을 사용하여 여러 목록으로 이동

기본 설정이 완료되자 Tim은 상황을 "조금 더 흥미롭게" 만듭니다(3:22). 그는 하나의 목록 대신 usualNames와 familyNames라는 두 개의 목록을 가지고 있습니다.

그는 원래의 .AddChoices() 호출을 주석 처리하고 .AddChoiceGroup()을 도입합니다(3:32–3:38). 이를 통해 그는 관련 항목들을 하나의 라벨로 묶을 수 있습니다. 그는 이렇게 썼습니다.

.AddChoiceGroup("The usual names", usualNames)
.AddChoiceGroup("Family names", familyNames)
.AddChoiceGroup("The usual names", usualNames)
.AddChoiceGroup("Family names", familyNames)

이제 각 그룹이 프롬프트에 개별적으로 나타납니다. 이러한 구조는 특히 수십 가지 옵션을 제시하고 이를 페이지나 그룹으로 정리하려는 경우에 유용합니다. 대화 기록에는 나타나지 않지만, Spectre Console의 다중 선택 프롬프트에는 PageSize 속성이 있어 한 화면에 표시할 항목 수보다 선택 항목이 더 많을 때 한 번에 표시되는 항목 수를 제어할 수 있습니다.

런타임 시 그룹 선택은 어떻게 작동할까요?

Tim은 코드를 저장하고 다시 실행합니다(4:11). 새로운 프롬프트는 두 그룹 모두에 명확한 레이블을 표시합니다. 그가 커서를 "일반적인 이름" 레이블로 이동하고 스페이스바를 누르면 해당 그룹의 모든 항목이 한 번에 선택됩니다(4:17–4:19).

그는 또한 목록이 화면보다 길 경우 Spectre Console이 자동으로 스크롤을 처리한다고 지적합니다. 그러면 회색으로 "더 많은 선택 항목을 보려면 위아래로 움직이세요"라는 메시지가 표시됩니다(4:25~4:31). 스크롤 가능한 목록의 기본 동작입니다.

Tim은 가족 이름까지 스크롤하여 선택한 다음 Sue Storm과 같은 개인을 선택하는 방법을 보여줍니다(4:39–4:43). 그가 Enter 키를 누르면 콘솔에 선택된 모든 이름이 합쳐져 출력됩니다(4:45). 이 예시는 함수가 더 많은 선택지를 표시하고, 선택지를 전환할 수 있도록 한 다음, 선택된 객체들의 목록을 하나로 반환하는 방식을 보여줍니다.

Spectre Console Multi Select Lists Groupings 2 related to 런타임 시 그룹 선택은 어떻게 작동할까요?

다중 선택 프롬프트와 선택 프롬프트의 차이점 이해하기

5시에 팀이 지금까지 보여준 내용을 요약합니다. 다중 선택 프롬프트는 일반 선택 프롬프트와 유사하게 작동하지만, 입력한 유형의 목록을 반환합니다(5:03–5:08).

그가 했던 것처럼 지시 텍스트를 추가할 수 있으며, 선택 그룹을 사용하여 전체 그룹을 구성하고 필요에 따라 한 번의 키 입력으로 선택할 수 있습니다(5:14–5:18). 이를 통해 사용자는 크거나 복잡한 메뉴를 훨씬 더 쉽게 관리할 수 있습니다.

이는 Spectre Console이 복잡한 객체를 처리할 수 있다는 점을 시사합니다. 즉, 사용자가 선택하는 객체는 문자열 이상일 수 있습니다. ChoiceLabel 속성을 가진 객체를 제공하여 표시되는 내용을 제어할 수 있으며, 사용자가 답변을 수락하면 전체 객체를 반환받을 수 있습니다.

선택 그룹 및 레이블의 유연한 사용

Tim은 또한 .AddChoiceGroup()을 사용하기 위해 두 개의 그룹이 필요하지 않다는 점을 명확히 합니다(5:20–5:24). 단일 그룹이라도 전체 그룹을 한 번에 선택할 수 있다는 장점이 있습니다.

그는 그룹 이름을 "모두 선택"과 같이 더 일반적인 이름으로 지정할 수 있음을 보여줍니다(5:34–5:42). 맨 위 항목을 선택하면 아래의 모든 항목이 토글됩니다(5:44–5:47). 색상 강조 표시(예: 그룹 레이블을 녹색 또는 파란색으로 표시하여 구분)를 사용하여 사용자가 기본 또는 필수 그룹을 쉽게 찾을 수 있도록 안내할 수도 있습니다. 이렇게 하면 프롬프트 구조를 구성하는 데 있어 훨씬 더 많은 유연성을 확보할 수 있습니다.

마무리

Tim은 영상 말미에 다음과 같이 요약합니다. 이것이 Spectre Console을 사용하여 다중 선택 프롬프트를 만드는 방법이며, 그룹 선택을 위한 선택 그룹 추가 방법도 포함됩니다(5:50–5:53). 늘 그렇듯 소스 코드는 설명란에 있습니다(5:57).

팀 코리의 공략에서 얻은 핵심 요점

  • Spectre Console의 다중 선택 기능을 사용하면 사용자가 목록에서 항목을 하나도 선택하지 않거나, 하나 선택하거나, 여러 개 선택할 수 있습니다.

  • 사용자를 안내하기 위해 제목과 안내 문구를 추가하세요. 강조색을 사용하여 필수 정보를 강조할 수 있습니다.

  • 단순 목록의 경우 .AddChoices()를 사용하고, 여러 개 또는 그룹화된 목록의 경우 .AddChoiceGroup()을 사용하십시오.

  • 사용자는 스페이스 키를 눌러 선택 항목을 전환하고 엔터 키를 눌러 확인합니다.

  • 그룹 레이블 자체를 전환하여 모든 항목을 한 번에 선택할 수 있습니다.

  • 프롬프트는 ChoiceLabel 속성을 사용하여 복잡한 개체를 표시하면서 기본 개체를 반환할 수 있습니다.

  • 한 페이지에 표시할 수 있는 것보다 선택지가 많을 경우 페이지 크기 조정 및 스크롤 기능을 활용하세요.

Tim Corey의 실제 이름 목록과 가족 이름 목록을 활용한 예시를 따르면, Spectre 콘솔 애플리케이션에서 깔끔하고 사용자 친화적인 다중 선택 목록을 빠르게 구현할 수 있습니다.

Hero Worlddot related to 그룹이 포함된 다중 선택 목록 - Spectre 콘솔 시리즈
Hero Affiliate related to 그룹이 포함된 다중 선택 목록 - Spectre 콘솔 시리즈

사랑하는 것을 공유하여 더 많은 수익을 얻으세요

당신은 .NET, C#, Java, Python, 또는 Node.js를 다루는 개발자를 위한 콘텐츠를 만드나요? 당신의 전문성을 추가 수입으로 전환하세요!

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해