我目前正在制作“關上門,骰子游戲”的專案。我已經使用 for 回圈來標記“門”,現在我的問題是如何在單擊正確的“門”后將“門”更新為“-”。
import tkinter, random
window = tkinter.Tk(); window.title("Dice Game - Shut the DOOR")
def roll():
result["text"] = int(random.randint(1,6))
result_2["text"] = int(random.randint(1,6))
for door in range(12):
number = tkinter.Label(window, text=door 1)
number.grid(row=0, column=door, sticky="e")
result = tkinter.Label(text="-")
result_2= tkinter.Label(text="-")
result.grid(row=1, column=0)
result_2.grid(row=1,column=1, sticky="w")
dice = tkinter.Button(window, text="Roll", command=roll)
dice.grid(row=2, column=0)
感謝您的幫助
uj5u.com熱心網友回復:
用于.bind("<Button>", function)在單擊標簽(或任何其他小部件)時執行某些操作。首先,定義一個函式來處理事件,然后添加number.bind("<Button>", function_name)使該函式在number被點擊時運行。
Tkinter 會自動將一個引數傳遞給包含事件資訊的函式,因此該函式必須接受一個引數。這用于獲取單擊的數字。
完整代碼:
import tkinter, random
window = tkinter.Tk(); window.title("Dice Game - Shut the DOOR")
def change_text(event):
number = event.widget
if result["text"] == "-" or number["text"] == "-": return
if int(result["text"]) int(result_2["text"]) == int(number["text"]):
number["text"] = "-"
def roll():
result["text"] = int(random.randint(1,6))
result_2["text"] = int(random.randint(1,6))
for door in range(12):
number = tkinter.Label(window, text=door 1, width=1)
number.grid(row=0, column=door, sticky="e")
number.bind("<Button>", change_text)
result = tkinter.Label(text="-")
result_2= tkinter.Label(text="-")
result.grid(row=1, column=0)
result_2.grid(row=1,column=1, sticky="w")
dice = tkinter.Button(window, text="Roll", command=roll)
dice.grid(row=2, column=0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/369267.html
