Поскольку половину веселья пытаются решить сами, я дам вам несколько советов вместо полной программы.
Вам следует хранить переменные для ваших входных записей, чтобы вы могли использовать их позже, чтобы снова получить значения, но не делайте этого:
entry = Entry(root,bg = 'white').pack(padx = 10, pady = 10)
Это не совсем то, что вы ожидаете, потому что вы также вызываете pack (), он не возвращает виджет ввода, вы получите NoneType, а beacuse pack () ничего не возвращает. Используйте следующее:
entry = Entry(root,bg = 'white')
entry.pack(padx = 10, pady = 10)
Кроме того, используйте две отдельные входные переменные, потому что вы хотите одну для вашего числа бросков и одну для числовых сторон, например:
entry_sides = Entry(root,bg = 'white')
entry_sides.pack(padx = 10, pady = 10)
В вашей функции callme () вы можете снова получить эти значения, чтобы использовать их для бросания костей:
number_of_sides = int(entry_sides.get())
И, наконец, вместо создания label3 внутри callme, создайте его как часть фрейма, как вы это делали с другими метками, а затем обновите его значение после вычисления значения броска костей:
def callme():
# get dice total here using variables from entry
label3.config(text = str(dice_total))