随机 TKinter 骰子滚筒

random TKinter Dice Roller

import Tkinter
import random
win = Tkinter.Tk()
win.title('Dice Roller')

def mainloop():
    class Die:
        def __init__(self,ivalue, parent):
            self.value = ivalue
            self.display = Tkinter.Label(parent,relief='ridge',borderwidth=4, text=str(self.value))
        def roll(self):
            self.value = random.randint(1,6)
            self.display.config(text=str(self.value))
    class diceRoller:    
        def rolldice():
            d1.roll()
            d2.roll()
            d3.roll()
        def __init__(self):
                self.diceList = []
                self.win = Tkinter.Tk("Dice Roller")

                for i in range(3):
                    di = Die(self.win)
                    self.dieList.append(di)
                    rolldice()

    row1 = Tkinter.Frame(win)
    row2 = Tkinter.Frame(win)
    d1.roll.display.pack(side="left")
    d2.roll.display.pack(side="left")
    d3.roll.display.pack(side="left")
    row1.pack()
    rolldice = Tkinter.Button(row2, command=rolldice(), text = "Roll")
    rolldice.pack()
    row2.pack()


 win.mainloop()

我的 python 代码与 Tkinter 有问题。我试图让它生成一个 window,其中三个按钮显示骰子上掷出的数字,另一个按钮让我重新掷骰子。

方法 rolldice 下的 class diceRoller 中的代码必须在某种方法中。它不能只停留在 class 中。使用 def 创建方法并将该代码添加到其中。

如果一个方法的名称是__init__,它被称为构造函数。构造函数是一种将在创建对象时调用的方法(即当您执行 diceRoller() 时)。你也许应该把代码,现在只是放在diceRoller里面,变成这样一个method/constructor,我不知道(你应该知道是不是这样)。

注意:在Python中我们通常将class个名字的第一个字符写成大写。