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()も呼び出しているため、エントリウィジェットは返されません。代わりに、pack()は何も返さないため、NoneTypeになります。以下を使用してください。

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

また、2つの別々のエントリ変数を使用します。これは、ロールの数に1つ、サイドの数に1つが必要なためです。たとえば、次のようになります。

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 に答える