“非类型”对象没有属性“配置”

2024-10-04 03:19:58 发布

您现在位置:Python中文网/ 问答频道 /正文

运行程序时,它会启动,但会刷新写在Buttonautoclicker2buy上的文本,该文本应在调用函数buyautoclicker2时更新: Buttonautoclicker2buy.config(text=autoclicker2price),但是文本没有改变,最后我得到了这个错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Jérôme\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1884, in __call__
    return self.func(*args)
  File "C:\Users\Jérôme\PycharmProjects\Tkinter\Coins counter.py", line 85, in buyautoclicker2
    Buttonautoclicker2buy.config(text=autoclicker2price)
AttributeError: 'NoneType' object has no attribute 'config'

以下是全部代码:

from tkinter import *
from numerize import numerize
from functools import partial

window=Tk()

window.geometry("1920x1080")
window.title("COINZ CLICKER")
window.iconbitmap("coin.ico")
window.config(background="#7693c2")

#color : Blue1(main interface) = #7693c2
#color : Blue2(shop interface) = #93aacf
#color : Blue3(shop text) = #748cb3
#color : Blue4 =


convertedcoin = 0
coin = 12038
current_window = None

def convert_str_to_number(x):
    convertedcoin = numerize.numerize(x)
    return (convertedcoin)


def addcoin(x):
    global coin
    coin += x
    convert_str_to_number(coin)
    label.config(text=coin)


# AUTOCLICKER 1 FUNCTIONS-----------------------------------------------------------------------------------------------

autoclicker1price = 100
Buttonautoclicker1buy = None
autoclickerimage = PhotoImage(file="cursor.png").zoom(3).subsample(30)
autoclicker1 = 0

def buyautoclicker1():
    global coin
    global autoclicker1
    global autoclicker1price
    global Buttonautoclicker1buy

    if coin >= autoclicker1price:
        addcoin(-autoclicker1price)
        label.config(text=coin)
        autoclicker1 += 1
        startautoclicker1()
        autoclicker1price=augmentprice(autoclicker1price)
        Buttonautoclicker1buy.config(text=autoclicker1price)


def autoclicker1loop():
    window.after(500, autoclicker1loop)
    addcoin(1)


def startautoclicker1():
    global coin
    if autoclicker1 > 0:
        autoclicker1loop()

# AUTOCLICKER 2 FUNCTIONS ----------------------------------------------------------------------------------------------

autoclicker2price = 10000
Buttonautoclicker2buy = None
autoclicker2image = PhotoImage(file="AUTOCLICKER_tier2.png").zoom(3).subsample(20)
autoclicker2 = 0

def buyautoclicker2():
    global coin
    global autoclicker2
    global autoclicker2price
    global Buttonautoclicker2buy

    if coin >= autoclicker2price:
        addcoin(-autoclicker2price)
        label.config(text=coin)
        autoclicker2 += 1
        startautoclicker2()
        autoclicker2price=augmentprice(autoclicker2price)
        Buttonautoclicker2buy.config(text=autoclicker2price)


def autoclicker2loop():
    window.after(100, autoclicker2loop)
    addcoin(1)


def startautoclicker2():
    global coin
    if autoclicker2 > 0:
        autoclicker2loop()

# FUNCTION AUGMENT PRICE------------------------------------------------------------------------------------------------

def augmentprice(x):
    global autoclicker2price
    x= int(x*1.7)
    return(x)


# SHOP =================================================================================================================

def openshop():

    # GLOBAL VARIABLES -------------------------------------------------------------------------------------------------
    global autoclicker1price
    global coin
    global autoclickerimage
    global CoinImage3
    global current_window
    global Buttonautoclicker1buy

    # DEFINITION OF THE SHOP -------------------------------------------------------------------------------------------

    if current_window is not None:
        current_window.destroy()

    Shop = Toplevel()
    Shop.geometry("1250x750")
    Shop.geometry("+650+150")
    Shop.title("SHOP")
    Shop.iconbitmap("shop.ico")
    Shop.config(background="#93aacf")
    Shop.overrideredirect(0)

    current_window = Shop

    # MAIN FRAMES ------------------------------------------------------------------------------------------------------

    botframe = Frame(Shop, bg="#93aacf")
    botframe.grid(sticky="w",column=0,row=1)

    toptitleFrame = Frame(Shop,bg="#93aacf")
    toptitleFrame.grid(column=0, row=0)

    # AUTOCLICKER 1 ----------------------------------------------------------------------------------------------------

    # frame

    autoclicker1Frame = Frame(botframe, bg="#93aacf")
    autoclicker1Frame.grid(sticky="w", column=0, row=0, pady=(30, 20), padx=30)

    # canvas

    autoclicker1canvas = Canvas(autoclicker1Frame,width=80, height=80,bg="#7693c2",highlightthickness=1,bd=2)
    autoclicker1canvas.grid()
    autoclicker1canvas.create_image(40,45, image=autoclickerimage)

    # label

    autoclicker1label = Label(autoclicker1Frame,text="AUTO CLICKER",bg="#748cb3",font=("ASI_System",15,"bold"))
    autoclicker1labelunderline = Label(autoclicker1Frame, text="2 CPS", bg="#748cb3", font=("ASI_System", 15, "underline"))
    autoclicker1label.grid(pady=(5,0))
    autoclicker1labelunderline.grid()

    # button

    Buttonautoclicker1buy = Button(autoclicker1Frame, width=80, height=40, text=autoclicker1price, bg="#7693c2"
                                   , command= buyautoclicker1, state= "normal", image=CoinImage3, compound="right", font=("ASI_System",20))
    Buttonautoclicker1buy.grid(pady=(10, 0))

    Buttonautoclicker1buy.config(state="normal")

    # SHOP TITLE -------------------------------------------------------------------------------------------------------

    shoptitlelabel = Label(toptitleFrame, text="SHOP", bg="#93aacf", font=("ASI_System", 25, "underline"))
    shoptitlelabel.grid(padx=600, sticky="n")

    # AUTOCLICKER 2 ----------------------------------------------------------------------------------------------------

    # frame

    autoclicker2frame = Frame(botframe,bg="#93aacf")
    autoclicker2frame.grid(column=1,row=0,pady=(30,20),padx=(30))

    # canvas

    autoclicker2canvas = Canvas(autoclicker2frame, width=80, height=80, bg="#7693c2", highlightthickness=1, bd=2)
    autoclicker2canvas.grid()
    autoclicker2canvas.create_image(40, 45, image=autoclicker2image)

    # label

    autoclicker2label = Label(autoclicker2frame, text="AUTO CLICKER", bg="#748cb3", font=("ASI_System", 15, "bold"))
    autoclicker2labelunderline = Label(autoclicker2frame, text="10 CPS", bg="#748cb3",
                                       font=("ASI_System", 15, "underline"))
    autoclicker2label.grid(pady=(5, 0))
    autoclicker2labelunderline.grid()

    # button

    Buttonautoclicker2buy = Button(autoclicker2frame, width=80, height=40, text=autoclicker2price, bg="#7693c2"
                                   , command=buyautoclicker2, state="normal", image=CoinImage3, compound="right",
                                   font=("ASI_System", 20))
    Buttonautoclicker2buy.grid(pady=(10, 0))

    Buttonautoclicker2buy.config(state="normal")







clickermain = Frame(window,bg="#7693c2")
mainframe1 = Frame(clickermain,bg="#7693c3",padx=10,pady=10)
mainframe2 = Frame(clickermain,bg="#7693c2", padx=10,pady=10 )
#iteminventoryframe = Frame(window,bg="#7693c2")
#color : lightblue
openshopframe = Frame(window, bg="#93aacf")


ShopImage = PhotoImage(file="icons8-boutique-64.png")

openshopbutton = Button(openshopframe,image=ShopImage, bg="#93aacf",command= openshop)
openshopbutton.grid()

CoinImage = PhotoImage(file="coin.png").zoom(10).subsample(13)
CoinImage2 = PhotoImage(file="coin.png").zoom(10).subsample(60)
CoinImage3 = PhotoImage(file="coin.png").zoom(5).subsample(100)

AddCoinButton = Button(mainframe1, borderwidth= 30, image=CoinImage, bg="#93aacf", command=partial(addcoin,1))
AddCoinButton.grid(column= 0, row=0 ,padx=180,pady=40)

canvas = Canvas(mainframe2, width = 100, height= 100, bg="#7693c2", bd=0, highlightthickness=0 )
canvas.create_image(50,50, image = CoinImage2)
canvas.grid(column=0,row=0)

label = Label(mainframe2, text=coin,bg="#7693c2",font=("ASI_System",50))
label.grid(column=1,row=0)

clickermain.grid(pady=150)
mainframe1.grid(column=0,row=0)
mainframe2.grid(padx=200,column=0,row=1,sticky="w")
#iteminventoryframe.grid(column=1,row=1)

openshopframe.grid(column=1,row=0,sticky="n",pady=100)




window.mainloop()



Tags: textimageconfigdefcolumnshopwindowglobal