from logging import root
from struct import pack
from os import system
from tkinter import ttk
import tkinter as tk
import random

def roll_dice():
    '''
    サイコロを振る
    '''
    count = int(cb_count.get())     # サイコロの数を取得
    dice = int(cb_dice.get())       # サイコロの種類を取得
    total = 0               # 合計値
    history = []            # サイコロの出目
    for no in range(count):
        d = random.randint(1, dice)
        total += d
        history.append(d)
    lbl_result['text'] = f'{total}\r\n{history}'
    return

'''
ウインドウを作成
サイコロの個数選択と結果表示、サイコロを振るボタンを配置する
'''
root = tk.Tk()
root.title('ダイス')
root.geometry('240x320')

guidemsg = tk.Label(root,
            text='サイコロの数と種類を選択してください')
count_nums = tuple(no for no in range(1, 11))
cb_count = ttk.Combobox(root,
            width=6,
            state='readonly',
            values=count_nums)
cb_count.current(0)
lbl_d = tk.Label(root,
            text='D')
dice_kind = tuple(no for no in range(2, 101))
cb_dice = ttk.Combobox(root,
            width=6,
            state='readonly',
            values=dice_kind)
cb_dice.current(4)
lbl_result = tk.Label(root,
            text='\r\n[ ]',
            font=('system', 20))
btn = tk.Button(root,
            text='サイコロを振る',
            command=roll_dice)

# 各行の割合を指定
weit = [1,1,3,1]
for no in range(4):
    root.rowconfigure(no, weight=weit[no])

# 各列の割合を指定
for no in range(3):
    root.columnconfigure(no, weight=1)

# grid関数で配置
guidemsg.grid(column=0, row=0, columnspan=3)
cb_count.grid(column=0, row=1, sticky=tk.E)
lbl_d.grid(column=1, row=1)
cb_dice.grid(column=2, row=1, sticky=tk.W)
lbl_result.grid(column=0, row=2, columnspan=3)
btn.grid(column=0, row=3, columnspan=3)

root.mainloop()
