Dice Roller с использованием Tkinter - PullRequest
1 голос
/ 23 октября 2009

Спасибо всем, кто помог ответить на мой последний вопрос :

Мой друг взял код и попытался использовать Tkinter, чтобы сделать коробку, которую мы могли бы использовать, чтобы сделать вещи более привлекательными, но он не смог интегрировать ролик для игры в кости из последнего вопроса и Tkinter. Любая помощь или идеи по добавлению ролика для игры в кости в приведенный ниже код были бы замечательными!

from Tkinter import *

def callme():
    label3 = Label(root, text = 'Haha! I lied!')
    label3.pack(padx = 10, pady = 10)

root = Tk()

label = Label(root, text = 'How many dice do you want to roll?')
label.pack(padx = 10, pady = 10)

entry = Entry(root,bg = 'white').pack(padx = 10, pady = 10)

label2 = Label(root, text = 'How many dice do you want to roll?')
label2.pack(padx = 10, pady = 10)

entry = Entry(root,bg = 'white').pack(padx = 10, pady = 10)

frame = Frame(root, bg = 'yellow')
button = Button(frame, command = callme, text = 'Roll!',width = 5, height = 2)

frame.pack()
button.pack(padx=10,pady=10)

root.mainloop()

1 Ответ

2 голосов
/ 23 октября 2009

Поскольку половину веселья пытаются решить сами, я дам вам несколько советов вместо полной программы.

Вам следует хранить переменные для ваших входных записей, чтобы вы могли использовать их позже, чтобы снова получить значения, но не делайте этого:

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...