DISC평가 GUI애플리케이션 - 실행과정

 DISC평가 GUI애플리케이션 - 실행과정

GUI 질문 폼을 그래픽으로 구현하기 위해 Python의 Tkinter 라이브러리를 사용하여 데스크톱 애플리케이션을 만들어보겠습니다. 이 방식은 웹 브라우저 없이도 사용자가 프로그램을 직접 실행할 수 있게 해줍니다.

DISC평가 GUI애플리케이션

```python

import tkinter as tk

from tkinter import messagebox


class DISCAssessment:

    def __init__(self, master):

        self.master = master

        self.master.title("DISC 성격 유형 평가")

        self.master.geometry("600x400")


        self.questions = [

            "새로운 프로젝트를 시작할 때, 나는 주로:",

            "스트레스 상황에서 나는:",

            # ... 나머지 26개 질문 추가 ...

        ]


        self.options = [

            ["빠르게 결정을 내리고 행동한다.", "팀원들과 아이디어를 나누고 토론한다.", 

             "신중하게 계획을 세우고 준비한다.", "팀의 조화를 고려하며 천천히 접근한다."],

            ["문제를 직접적으로 해결하려 노력한다.", "다른 사람들과 대화하며 해소하려 한다.", 

             "혼자 조용히 분석하고 생각한다.", "참을성 있게 상황이 개선되기를 기다린다."],

            # ... 나머지 질문에 대한 옵션 추가 ...

        ]


        self.disc_descriptions = {

            'D': "주도적, 결과 지향적, 자신감 있는 성향입니다.",

            'I': "사교적, 낙관적, 열정적인 성향입니다.",

            'S': "안정적, 협조적, 인내심 있는 성향입니다.",

            'C': "신중한, 정확한, 체계적인 성향입니다."

        }


        self.current_question = 0

        self.answers = []


        self.question_label = tk.Label(master, text="", wraplength=500, font=("Arial", 12))

        self.question_label.pack(pady=20)


        self.var = tk.StringVar()

        self.radio_buttons = []

        for i in range(4):

            rb = tk.Radiobutton(master, text="", variable=self.var, value=chr(97+i))

            rb.pack(anchor='w', padx=50)

            self.radio_buttons.append(rb)


        self.next_button = tk.Button(master, text="다음", command=self.next_question)

        self.next_button.pack(pady=20)


        self.show_question()


    def show_question(self):

        if self.current_question < len(self.questions):

            self.question_label.config(text=f"{self.current_question + 1}. {self.questions[self.current_question]}")

            for i, rb in enumerate(self.radio_buttons):

                rb.config(text=self.options[self.current_question][i])

            self.var.set("")

        else:

            self.show_result()


    def next_question(self):

        if self.var.get():

            self.answers.append(self.var.get())

            self.current_question += 1

            self.show_question()

        else:

            messagebox.showwarning("경고", "답변을 선택해주세요.")


    def calculate_result(self):

        scores = {'D': 0, 'I': 0, 'S': 0, 'C': 0}

        for answer in self.answers:

            if answer == 'a':

                scores['D'] += 1

            elif answer == 'b':

                scores['I'] += 1

            elif answer == 'c':

                scores['C'] += 1

            elif answer == 'd':

                scores['S'] += 1

        return max(scores, key=scores.get), scores


    def show_result(self):

        dominant_type, scores = self.calculate_result()

        result_window = tk.Toplevel(self.master)

        result_window.title("DISC 평가 결과")

        result_window.geometry("400x300")


        result_text = f"당신의 주요 DISC 유형은 {dominant_type}입니다.\n\n"

        result_text += f"{self.disc_descriptions[dominant_type]}\n\n"

        result_text += "점수 분포:\n"

        for disc_type, score in scores.items():

            result_text += f"{disc_type}: {score}\n"


        result_label = tk.Label(result_window, text=result_text, wraplength=350, justify='left')

        result_label.pack(pady=20)


        close_button = tk.Button(result_window, text="닫기", command=result_window.destroy)

        close_button.pack()


if __name__ == "__main__":

    root = tk.Tk()

    app = DISCAssessment(root)

    root.mainloop()

```

이 코드는 다음과 같이 작동합니다:

  1. 프로그램이 실행되면 첫 번째 질문과 선택지가 표시됩니다.
  2. 사용자가 답변을 선택하고 "다음" 버튼을 클릭하면 다음 질문으로 넘어갑니다.
  3. 모든 질문에 답하면 결과 창이 나타나, 사용자의 주요 DISC 유형과 설명, 그리고 각 유형별 점수를 보여줍니다.

이 GUI 애플리케이션을 실행하려면:

  1. Python이 설치되어 있어야 합니다.
  2. 위의 코드를 disc_assessment_gui.py와 같은 파일명으로 저장합니다.
  3. 터미널 또는 명령 프롬프트에서 python disc_assessment_gui.py 명령으로 프로그램을 실행합니다.

이 프로그램은 기본적인 기능을 제공하며, 필요에 따라 디자인을 개선하거나 더 자세한 결과 분석을 추가할 수 있습니다. 예를 들어, 프로그레스 바를 추가하여 진행 상황을 표시하거나, 결과 화면에 그래프를 추가하여 점수 분포를 시각화할 수 있습니다.

댓글 쓰기