2009-10-23 5 views
1

Спасибо всем, кто помог ответить на мой последний question:Dice Roller с использованием Tkinter

Мой друг взял код, и попытался использовать 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() 

ответ

2

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

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

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

Это не совсем то, что вы ожидаете , потому что вы также вызываете пакет(), он не вернет виджет ввода, в итоге вы получите 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()) 

И, наконец, вместо создания Метка3 внутри CallME, создать его как часть рамы, как вы делали с флористика r, а затем обновить его значение после вычисления значения броска кости:

def callme(): 
    # get dice total here using variables from entry 
    label3.config(text = str(dice_total)) 

 Смежные вопросы

  • Нет связанных вопросов^_^