Tkinter点击器游戏报pack_configure()缺self参数,点击计数功能失效
错误原因与修复方案
报错pack_configure() missing 1 required positional argument: 'self'的直接原因是你调用了Label类的pack方法,而非你实例化出的Label对象的pack方法,pack是实例专属方法,必须通过具体的Label对象调用,不能直接使用类名调用。
除此之外你的代码还存在两个可优化/修正的点:
- 每次点击都新建Label对象会导致界面不断堆叠计数标签,合理方案是提前创建1个计数Label,每次点击仅更新它的text属性即可
- 购买双倍点击的判断逻辑存在笔误,原代码中
elif click >= 5需要修改为elif click >= 50,和前置判断逻辑对应
修正后的完整代码如下:
from tkinter import * import time from tkinter import messagebox master = Tk() def uiPrint(): info() print("") print(click) blankLine() Label_1 = Label(text = "Double click purchases need 50 clicks!") Label_1.pack() click = 0 mult = 1 dcp1 = 0 # 提前创建计数Label,避免每次点击新建 count_label = Label(master, text=str(click)) count_label.pack() def blankLine(): for i in range(20): print("") def purchaseDoubleClicksCommand(): global click global mult if click < 50: messagebox.showinfo("showinfo", "Not enough clicks!") # 修正判断条件的笔误 elif click >= 50: mult = mult+1 click = click - 50 # 更新计数显示 count_label.config(text=str(click)) messagebox.showinfo("showinfo", "Double Clicks Purchased!") def buttonCommand(): global click global mult click += 1*(mult) # 直接更新已有Label的文本,无需新建 count_label.config(text=str(click)) mainClickButton = Button(master, text="Click!", command = buttonCommand) mainClickButton.pack() purchaseDoubleClickButton = Button(master, text="Purchase Double Clicks", command = purchaseDoubleClicksCommand) purchaseDoubleClickButton.pack() master.title("Clicker!") master.geometry("%sx%s+%s+%s" % (400,100,512,512)) mainloop()
内容的提问来源于stack exchange,提问作者FlamingBlizzard
相关产品推荐
相关产品推荐

