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()
```
이 코드는 다음과 같이 작동합니다:
- 프로그램이 실행되면 첫 번째 질문과 선택지가 표시됩니다.
- 사용자가 답변을 선택하고 "다음" 버튼을 클릭하면 다음 질문으로 넘어갑니다.
- 모든 질문에 답하면 결과 창이 나타나, 사용자의 주요 DISC 유형과 설명, 그리고 각 유형별 점수를 보여줍니다.
이 GUI 애플리케이션을 실행하려면:
- Python이 설치되어 있어야 합니다.
- 위의 코드를
disc_assessment_gui.py
와 같은 파일명으로 저장합니다. - 터미널 또는 명령 프롬프트에서
python disc_assessment_gui.py
명령으로 프로그램을 실행합니다.
이 프로그램은 기본적인 기능을 제공하며, 필요에 따라 디자인을 개선하거나 더 자세한 결과 분석을 추가할 수 있습니다. 예를 들어, 프로그레스 바를 추가하여 진행 상황을 표시하거나, 결과 화면에 그래프를 추가하여 점수 분포를 시각화할 수 있습니다.
댓글 쓰기