1

感谢所有帮助回答我最后一个问题的人:

我的朋友拿到了代码,并试图使用 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()
4

1 回答 1

2

因为一半的乐趣在于尝试自己解决问题,所以我会给你一些提示而不是完整的程序。

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

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

这并不完全符合您的预期,因为您还调用了 pack() 它不会返回条目小部件,您最终会得到 NoneType 而不是因为 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))
于 2009-10-23T15:59:42.570 回答