使用Tkinter的骰子辊

时间:2009-10-23 15:34:24

标签: python random tkinter

感谢所有帮助回复我{0}}的人:

我的朋友拿了代码,并尝试使用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 个答案:

答案 0 :(得分:2)

因为有一半的乐趣是试图自己解决,我会给你一些提示,而不是一个完整的程序。

您应该存储输入条目的变量,以便稍后可以使用它们再次获取值,但不要这样做:

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())

最后,不要在callme中创建label3,而是将其创建为框架的一部分,就像对其他标签一样,然后在计算骰子卷的值后更新其值:

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