感谢所有帮助回复我{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()
答案 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))