Подключение к функции, определенной в отдельном классе - PullRequest
1 голос
/ 29 января 2020

Я сейчас работаю над проектом, и мне нужна помощь. Я сделал отдельные классы, которые включают разные фреймы, которые ведут на разные страницы в пределах GUI. Я пытаюсь вызвать функцию, которая была определена в другом классе в проекте. Тем не менее, ошибка, которая продолжает появляться, заключается в том, что мне нужно определить его в этом классе. Фон этой функции - система входа в систему. Как только пользователь введет правильные данные, они будут перенаправлены в другое окно. Более того, я не могу вызвать эту функцию и не знаю, как это исправить.

Однако у меня также возникают проблемы с изменением размера основного главного окна GUI2. Главное окно. Я перепробовал много методов, но, похоже, ничто не влияет на окно.

Вот код:

class GUI(tk.Tk):

    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        self.title_font = tkfont.Font(family='Century Gothic', size=20)


        container = tk.Frame(self)
        container.pack(side="top", fill="both", expand=False)
        container.rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)

        self.frames = {}
        for F in (GUI2, Login, PageTwo, LoginSuccessful):
            page_name = F.__name__
            frame = F(parent=container, controller=self)
            self.frames[page_name] = frame


            frame.grid(row=0, column=0, sticky="nsew")

        self.show_frame("GUI2")


class Login(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        label = tk.Label(self, text="Please enter your deatils below to login into our voting system",
                         font=controller.title_font)
        label.pack(side="top", fill="x", pady=10)
        label = tk.Label(self, text="Username:",
                         font=controller.title_font)
        label.pack(side="top", fill="x", pady=10)
        self.username = Entry(self, width=20)
        self.username.pack()
        label = tk.Label(self, text="Password:",
                         font=controller.title_font)
        label.pack(side="top", fill="x", pady=10)
        self.password = Entry(self, show="*", width=20)
        self.password.pack()
        label = tk.Label(self, text="", )
        label.pack(side="top", fill="x", pady=10)
        self.text_btn = tk.Button(self, text="Login", height="2", width="30",
                                  command=lambda: self.verify()).pack()

        button = tk.Button(self, text="Back", height="2", width="20",
                           command=lambda: controller.show_frame("GUI2"))
        label = tk.Label(self, text="", )

        label.pack(side="top", fill="x", pady=10)
        button.pack()

        self.users = {}
        with open("StudentVotersFinal.csv", "r") as file:
            reader = csv.reader(file, delimiter=",")
            for data in reader:
                self.users[data[0]] = data[1]
                tk.Label(self, text="", ).pack()

    def login(self):
        return self.users.get(self.username.get()) == self.password.get()

    def verify(self):
        verified = self.login()
        if verified:
            print("logged in")

        else:
            msg.showerror("Error message", "You are not eligible to vote in this election")


class LoginSuccessful(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        label = tk.Label(self, text="View Candidates", font=controller.title_font)
        label.pack(side="top", fill="x", pady=10)
        button = tk.Button(self, text="Go to the start page",
                           command=lambda: controller.show_frame("GUI2"))
        button.pack()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...