自定义 tkinter 遇到此错误:AttributeError: type object 'ToplevelWindow' has no attribute 'bankbalance'

问题描述 投票:0回答:0

嗨,我是编码新手,不断收到此错误 RecursionError: maximum recursion depth exceeded 并且它说第 12 行是

self.geometry("250x300")
但我不确定为什么我会收到该错误。这也是我第一次使用 customtkinter 和类,所以我可能做错了。早些时候它正在运行,当我运行它时,我会遇到另一个错误,即
grab()
中的
class depositwindow()
函数错误是属性错误
MainScreen.Bankbalance
没有类型。我也不确定如何解决。

import customtkinter
import random

bankbalancenumber = random.randint(10000,150000)
account_number = random.randint(1111111111, 999999999999)

login_list = []


class login_screen(customtkinter.CTk):
    def open_bank_account(self):
        self.MainScreen = MainScreen(self)

    def signup(self):
        global login
        login_list.append(self.entry_1.get())
        login_list.append(self.entry_2.get())
        print(login_list)

    def login(self):
        print(login_list)
        if login_list[0] == self.entry_1.get() and login_list[1] == self.entry_2.get():
            self.open_bank_account()
        else:
            print("wrong username or password")
    def __init__(self):
        customtkinter.set_appearance_mode("dark")
        customtkinter.set_default_color_theme("blue")
        self.geometry("250x300")  # 900x1080
        self.title("Login")

        self.columnconfigure(0, weight=1)

        self.label_1 = customtkinter.CTkLabel(self, text="Bank Account", justify=customtkinter.RIGHT)
        self.label_1.grid(row=0, column=0, pady=10, padx=10)

        self.button_1 = customtkinter.CTkButton(self, command=self.signup, text="signup")
        self.button_1.grid(row=5, column=0, pady=10, padx=10)

        self.button_2 = customtkinter.CTkButton(self, command=self.login, text="login")
        self.button_2.grid(row=4, column=0, pady=10, padx=10)

        self.entry_1 = customtkinter.CTkEntry(self, placeholder_text="Username")
        self.entry_1.grid(row=2, column=0, pady=10, padx=10)

        self.entry_2 = customtkinter.CTkEntry(self, placeholder_text="Password")
        self.entry_2.grid(row=3, column=0, pady=10, padx=10)


class MainScreen(customtkinter.CTk):
    bankbalance = None

    def open_deposit(self):
        self.deopsit_window = DepositWindow(self)

    def deposit(self):
        self.open_deposit()

    def __init__(self,fg_color=None, *args, **kwargs):
        super().__init__()
        # Add widgets to the frame
        self.geometry("700x700")
        self.title("Main")

        self.bankbalance=customtkinter.CTkLabel(self, font=("Arial", 24), text="$" + str(bankbalancenumber))
        self.bankbalance.grid(row=0, column=0, rowspan=2, pady=10, padx=50, stick="W")

        self.columnconfigure(0, weight=1)
        self.columnconfigure(1, weight=1)
        self.columnconfigure(2, weight=1)
        self.rowconfigure(0, weight=1)
        self.rowconfigure(1, weight=0)
        self.rowconfigure(2, weight=1)
        self.rowconfigure(3, weight=1)
        self.rowconfigure(4, weight=1)
        self.rowconfigure(5, weight=1)
        self.rowconfigure(6, weight=1)
        self.rowconfigure(7, weight=1)

        self.label_3 =  customtkinter.CTkLabel(self, text=login_list[0] + "'s Account")
        self.label_3.grid(row=0, column=0, pady=10, padx=10, sticky="NW" )
        self.label_4 = customtkinter.CTkLabel(self, text="Account# " + str(account_number))
        self.label_4.grid(row=0, column=3, pady=10, padx=10, sticky="NE")
        self.button_3 = customtkinter.CTkButton(self, text="Deposit", command=self.deposit)
        self.button_3.grid(row=1, column=3, sticky="E", padx=50, pady=10)
        self.button_4 = customtkinter.CTkButton(self, text="Withdraw")
        self.button_4.grid(row=2, column=3, sticky="E", padx=50, pady=0)

class DepositWindow(customtkinter.CTk):
    def grab(self):
        global bankbalancenumber
        moneyin = self.entry_3.get()
        MONEYIN = int(moneyin)
        bankbalancenumber += MONEYIN
        print(bankbalancenumber)
        MainScreen.bankbalance.configure(bankbalancenumber)

    def __init__(self, fg_color=None, *args, **kwargs):
        super().__init__()
        self.title("Deposit")
        self.geometry("150x250")

        self.button_5 = customtkinter.CTkButton(self, text="deposit", command=self.grab)
        self.button_5.grid(pady=10, padx=10, row=2)
        self.entry_3 = customtkinter.CTkEntry(self)
        self.entry_3.grid(row=1, pady=10, padx=10)



if __name__ == "__main__":
    app = login_screen()
    app.mainloop()
python attributeerror customtkinter
© www.soinside.com 2019 - 2024. All rights reserved.