我第一次尝试使用 tkinter 时遇到了麻烦。我需要创建很多按钮,因此为了使代码看起来更简洁一些,我使用了 for 循环和动态变量名称来创建每个按钮。这样做的问题是,当创建每个按钮时,都会为该按钮运行 btnClick(x)。所以我有 PING!1,平安!2,...在我的终端。最重要的是,按钮在创建窗口后没有响应(单击它们没有响应)。
有没有办法使用 for 循环/动态变量并让按钮工作,或者是为每个按钮写出来的唯一方法?
from tkinter import *
window = Tk()
btns = {}
btnNames = ["Description", "Tags", "Display", "Armor",
"Hit Points", "Damage", "Speed", "Ability Scores",
"Saving Throws", "Skills", "Vulnerabilities", "Resistances",
"Immunities (Damage)", "Immunities (Conditions)", "Senses", "Languages",
"Traits", "Actions", "Reactions", "Paragon Actions",
"Ledgendary Actions", "Lair Actions", "Notes"]
def StartWindow():
# set Basics
window.title("Monster Maker")
window.geometry('900x600')
# Set Icon
window.iconbitmap("Sources/Icon.ico")
MonsterMaker()
# Run window
window.mainloop()
def MonsterMaker():
for x in range(23):
name = "btn" + str(x)
btns[name] = Button(window, text=btnNames[x], command=btnClick(x), width=20, height=1)
btns[name].grid(column=0, row=x)
def btnClick(index):
print("PING! " + str(index))
if __name__ == "__main__":
StartWindow()```
DIEA
相关分类