Python Integrity Test

---

# 誠実性の性格診断
pythonを使った軽い心理テストをやろうと思います。

---

#windowの表示
```python:
#下準備
root=tk.Tk()
root.geometry("700x700")
root.title("誠実性の性格診断")
# 履歴表示のテキストボックスを作成
rirekibox=tk.Text(root,font=("Helvetica",14))
rirekibox.place(x=0,y=500,width=700,height=400)
```
---

#内容の書き込み
```python:
# ラベル
anounce_labell=tk.Label(root,text="当てはまるものに1を入力、それ以外は0を",font=(20))
anounce_labell.place(x=20,y=20)

qus1_labell = tk.Label(root,text="どちらかというと徹底的にやる方です。",font=(10))
qus1_labell.place(x=20, y=50)

qus2_labell = tk.Label(root,text="筋道を立てて物事を考える方です。",font=(10))
qus2_labell.place(x=20, y=80)

qus3_labell = tk.Label(root,text="旅行などでは、あらかじめ細かく計画を立てることが多い。",font=(10))
qus3_labell.place(x=20, y=110)

qus4_labell = tk.Label(root,text="はっきりとした目標を持って、適切なやり方で取り組みます。",font=(10))
qus4_labell.place(x=20, y=140)

qus5_labell = tk.Label(root,text="仕事や勉強には精力的に取り組みます。",font=(10))
qus5_labell.place(x=20, y=170)

anounce2_labell=tk.Label(root,text="当てはまらないものに1を入力、それ以外は0を",font=(20))
anounce2_labell.place(x=20,y=210)

qus6_labell = tk.Label(root,text="どちらかというと怠惰な方です。",font=(10))
qus6_labell.place(x=20, y=240)

qus7_labell = tk.Label(root,text="何かに取り組んでも、中途半端でやめてしまうことが多い。",font=(10))
qus7_labell.place(x=20, y=270)

qus8_labell = tk.Label(root,text="どちらかというと三日坊主で、根気がない方です。",font=(10))
qus8_labell.place(x=20, y=300)

qus9_labell = tk.Label(root,text="どちらかというと飽きっぽい方です。",font=(10))
qus9_labell.place(x=20, y=330)

qus10_labell = tk.Label(root,text="問題を綿密に検討しないで、実行に移すことが多い。",font=(10))
qus10_labell.place(x=20, y=360)

qus11_labell = tk.Label(root,text="軽率に物事を決めたり、行動してしまいます。",font=(10))
qus11_labell.place(x=20, y=390)

qus12_labell = tk.Label(root,text="物事がうまくいかないと、すぐに投げ出したくなります。",font=(10))
qus12_labell.place(x=20, y=420)
```
---

#点数をつけるテキストボックスを作成
```python:
# テキストボックス
editbox1 = tk.Entry(width=2)
editbox1.place(x=380, y=55)

editbox2 = tk.Entry(width=2)
editbox2.place(x=340, y=85)

editbox3 = tk.Entry(width=2)
editbox3.place(x=550, y=115)

editbox4 = tk.Entry(width=2)
editbox4.place(x=580, y=145)

editbox5 = tk.Entry(width=2)
editbox5.place(x=400, y=175)

editbox6 = tk.Entry(width=2)
editbox6.place(x=320, y=245)

editbox7 = tk.Entry(width=2)
editbox7.place(x=560, y=275)

editbox8 = tk.Entry(width=2)
editbox8.place(x=480, y=305)

editbox9 = tk.Entry(width=2)
editbox9.place(x=350, y=335)

editbox10 = tk.Entry(width=2)
editbox10.place(x=510, y=365)

editbox11 = tk.Entry(width=2)
editbox11.place(x=450, y=395)

editbox12 = tk.Entry(width=2)
editbox12.place(x=520, y=425)
```
- ラベルと合わせて配置する必要があるので試行錯誤を繰り返す。

---

#採点のプログラムを作る
```python:
def ButtonClick():
    q1=int(editbox1.get())
    q2=int(editbox2.get())
    q3=int(editbox3.get())
    q4=int(editbox4.get())
    q5=int(editbox5.get())
    q6=int(editbox6.get())
    q7=int(editbox7.get())
    q8=int(editbox8.get())
    q9=int(editbox9.get())
    q10=int(editbox10.get())
    q11=int(editbox11.get())
    q12=int(editbox12.get())
    result=q1+q2+q2+q3+q4+q5+q6+q7+q8+q9+q10+q11+q12
    rirekibox.insert(tk.END,"合計:"+str(result)+"\n")
    if result<=1:
        rirekibox.insert(tk.END,"診断結果:誠実性は弱い\n"+"何事でも精力的、徹底的に取り組み、細かく計画を立てます。責任感があり、勤勉で、注意深く、実際的な感覚があります。そのため、与えられた仕事は、すばやく正確にやり遂げます。几帳面で、良心的な、規律正しい倹約家です。時間に正確なため、他の人には気むずかしい印象を与えています。")
    if result>=2 and result<=4:
        rirekibox.insert(tk.END,"診断結果:まあまあ弱い誠実性\n"+"怠惰で、根気がなく、何事も中途半端でやめてしまいがちです。責任感がなく、気まぐれで、いい加減で、飽きっぽいところがあります。ぼんやりして、軽率に物事を決めたり、行動してしまうことがあります。")
    if result>=5 and result<=8:
        rirekibox.insert(tk.END,"診断結果:全体に対して中間ぐらい\n"+"仕事や勉強を特に精力的、徹底的にする方ではありませんが、すべきことは大体人並みに取り組んでいます。特に素早く、能率的、正確にこなす方ではありません。注意深さや、実際的な感覚は標準的です。時間も大体守って、だらしない正確にならないように気をつけています。")
    if result>=9 and result<=11:
        rirekibox.insert(tk.END,"診断結果:まあまあ強い誠実性\n"+"何事でも精力的、徹底的に取り組み、細かく計画を立てる方です。責任感があり、勤勉で、注意深く、実際的な感覚があります。そのため、与えられた仕事は、すばやく正確にやり遂げようとします。几帳面で、良心的な倹約家です。時間には正確な方です。")
    if result==12:
        rirekibox.insert(tk.END,"診断結果:強い誠実性を持つ人\n"+"何事でも精力的、徹底的に取り組み、細かく計画を立てます。責任感があり、勤勉で、注意深く、実際的な感覚があります。そのため、与えられた仕事は、すばやく正確にやり遂げます。几帳面で、良心的な、規律正しい倹約家です。時間に正確なため、他の人には気むずかしい印象を与えています。")

```
- 合計点を出すとき文字列と数字を分けなきゃいけないことを忘れて時間がかかってしまった...

---

#実行の様子
![python.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638181/dfd0fae5-d6a6-bf5b-79b8-cc547481284a.png)

---

#まとめると
```python:
coding-utf-8
import tkinter as tk
import tkinter.messagebox as tmsg
def ButtonClick():
    q1=int(editbox1.get())
    q2=int(editbox2.get())
    q3=int(editbox3.get())
    q4=int(editbox4.get())
    q5=int(editbox5.get())
    q6=int(editbox6.get())
    q7=int(editbox7.get())
    q8=int(editbox8.get())
    q9=int(editbox9.get())
    q10=int(editbox10.get())
    q11=int(editbox11.get())
    q12=int(editbox12.get())
    result=q1+q2+q2+q3+q4+q5+q6+q7+q8+q9+q10+q11+q12
    rirekibox.insert(tk.END,"合計:"+str(result)+"\n")
    if result<=1:
        rirekibox.insert(tk.END,"診断結果:誠実性は弱い\n"+"何事でも精力的、徹底的に取り組み、細かく計画を立てます。責任感があり、勤勉で、注意深く、実際的な感覚があります。そのため、与えられた仕事は、すばやく正確にやり遂げます。几帳面で、良心的な、規律正しい倹約家です。時間に正確なため、他の人には気むずかしい印象を与えています。")
    if result>=2 and result<=4:
        rirekibox.insert(tk.END,"診断結果:まあまあ弱い誠実性\n"+"怠惰で、根気がなく、何事も中途半端でやめてしまいがちです。責任感がなく、気まぐれで、いい加減で、飽きっぽいところがあります。ぼんやりして、軽率に物事を決めたり、行動してしまうことがあります。")
    if result>=5 and result<=8:
        rirekibox.insert(tk.END,"診断結果:全体に対して中間ぐらい\n"+"仕事や勉強を特に精力的、徹底的にする方ではありませんが、すべきことは大体人並みに取り組んでいます。特に素早く、能率的、正確にこなす方ではありません。注意深さや、実際的な感覚は標準的です。時間も大体守って、だらしない正確にならないように気をつけています。")
    if result>=9 and result<=11:
        rirekibox.insert(tk.END,"診断結果:まあまあ強い誠実性\n"+"何事でも精力的、徹底的に取り組み、細かく計画を立てる方です。責任感があり、勤勉で、注意深く、実際的な感覚があります。そのため、与えられた仕事は、すばやく正確にやり遂げようとします。几帳面で、良心的な倹約家です。時間には正確な方です。")
    if result==12:
        rirekibox.insert(tk.END,"診断結果:強い誠実性を持つ人\n"+"何事でも精力的、徹底的に取り組み、細かく計画を立てます。責任感があり、勤勉で、注意深く、実際的な感覚があります。そのため、与えられた仕事は、すばやく正確にやり遂げます。几帳面で、良心的な、規律正しい倹約家です。時間に正確なため、他の人には気むずかしい印象を与えています。")



#下準備
root=tk.Tk()
root.geometry("700x700")
root.title("誠実性の性格診断")
# 履歴表示のテキストボックスを作成
rirekibox=tk.Text(root,font=("Helvetica",14))
rirekibox.place(x=0,y=500,width=700,height=400)
# ラベル
anounce_labell=tk.Label(root,text="当てはまるものに1を入力、それ以外は0を",font=(20))
anounce_labell.place(x=20,y=20)

qus1_labell = tk.Label(root,text="どちらかというと徹底的にやる方です。",font=(10))
qus1_labell.place(x=20, y=50)

qus2_labell = tk.Label(root,text="筋道を立てて物事を考える方です。",font=(10))
qus2_labell.place(x=20, y=80)

qus3_labell = tk.Label(root,text="旅行などでは、あらかじめ細かく計画を立てることが多い。",font=(10))
qus3_labell.place(x=20, y=110)

qus4_labell = tk.Label(root,text="はっきりとした目標を持って、適切なやり方で取り組みます。",font=(10))
qus4_labell.place(x=20, y=140)

qus5_labell = tk.Label(root,text="仕事や勉強には精力的に取り組みます。",font=(10))
qus5_labell.place(x=20, y=170)

anounce2_labell=tk.Label(root,text="当てはまらないものに1を入力、それ以外は0を",font=(20))
anounce2_labell.place(x=20,y=210)

qus6_labell = tk.Label(root,text="どちらかというと怠惰な方です。",font=(10))
qus6_labell.place(x=20, y=240)

qus7_labell = tk.Label(root,text="何かに取り組んでも、中途半端でやめてしまうことが多い。",font=(10))
qus7_labell.place(x=20, y=270)

qus8_labell = tk.Label(root,text="どちらかというと三日坊主で、根気がない方です。",font=(10))
qus8_labell.place(x=20, y=300)

qus9_labell = tk.Label(root,text="どちらかというと飽きっぽい方です。",font=(10))
qus9_labell.place(x=20, y=330)

qus10_labell = tk.Label(root,text="問題を綿密に検討しないで、実行に移すことが多い。",font=(10))
qus10_labell.place(x=20, y=360)

qus11_labell = tk.Label(root,text="軽率に物事を決めたり、行動してしまいます。",font=(10))
qus11_labell.place(x=20, y=390)

qus12_labell = tk.Label(root,text="物事がうまくいかないと、すぐに投げ出したくなります。",font=(10))
qus12_labell.place(x=20, y=420)
# テキストボックス
editbox1 = tk.Entry(width=2)
editbox1.place(x=380, y=55)

editbox2 = tk.Entry(width=2)
editbox2.place(x=340, y=85)

editbox3 = tk.Entry(width=2)
editbox3.place(x=550, y=115)

editbox4 = tk.Entry(width=2)
editbox4.place(x=580, y=145)

editbox5 = tk.Entry(width=2)
editbox5.place(x=400, y=175)

editbox6 = tk.Entry(width=2)
editbox6.place(x=320, y=245)

editbox7 = tk.Entry(width=2)
editbox7.place(x=560, y=275)

editbox8 = tk.Entry(width=2)
editbox8.place(x=480, y=305)

editbox9 = tk.Entry(width=2)
editbox9.place(x=350, y=335)

editbox10 = tk.Entry(width=2)
editbox10.place(x=510, y=365)

editbox11 = tk.Entry(width=2)
editbox11.place(x=450, y=395)

editbox12 = tk.Entry(width=2)
editbox12.place(x=520, y=425)

# ボタン
button1 = tk.Button(root, text="Check", font=("Helvetica"),command=ButtonClick)
# command はクリックされたとき実行する関数
button1.place(x=600, y=400)
# window表示
root.mainloop()
```
---

#感想
- どんなものを作るかすごく悩んでいろいろ試したけど、イメージはできてもそれらのほとんどは作れなかった。
- イメージしたものを全部作れるようになりたい。

---

#参考文献
- [心理テスト](https://re-curious.com/big5-personality-diagnosis-conscientiousness/)
- 「いちばんやさしいPython入門教室」大澤文孝[著]

---