Как узнать какую страницу текущая страница загружена в tkinter - PullRequest
0 голосов
/ 10 ноября 2019

Код предназначен для расчета времени ожидания для различных продуктовых киосков (куриный рис и малайская еда) в зависимости от количества людей в очереди. В настоящее время обе продуктовые лавки ведут на одну и ту же страницу с одинаковыми функциями. Поэтому одно и то же время ожидания независимо от того, какой ларек. Тем не менее, мне нужно другое время ожидания для разных киосков.

Но для этого мне нужно знать, как получается «Рассчитать время ожидания». Я слаб с синтаксисом Tkinter, так как нас никогда не учили в классе. Школа только что бросила нам этот проект, поэтому, пожалуйста, потерпите меня.

У меня была идея передать переменную / аргумент при прохождении команды кнопки «Рассчитать время ожидания». Так, например, для первого киоска будет передано «1», для второго киоска «2», а затем в функции «current» класса «Waitingtime», используйте if-else, чтобы определить, какой киоск был источником. Но я действительно не знаю, как внедрить его в код.

Я искал и читал несколько вопросов, опубликованных на этом сайте, но ни один из них не вызывает класс в команде, как этот код.

Любая помощь будет оценена. Спасибо!

import Tkinter as tk

class NTUCanteen(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)        

        self.title("NTU Canteen Information")

        self.geometry('400x400')
        self.resizable(False, False)

        self._frame = None
        self.switch_frame(All_stores)

    def switch_frame(self, frame_class):
        new_frame = frame_class(self)
        if self._frame is not None:
            self._frame.destroy()
        self._frame = new_frame
        self._frame.pack()

class All_stores(tk.Frame):
    def __init__(self, master):
        tk.Frame.__init__(self, master)

        self = tk.Frame(self)
        self.pack(pady=20)

        self.chickenrice = tk.Button(self, text="Chicken Rice",
                                     command=lambda: master.switch_frame(Chickenrice))
        self.chickenrice.pack(fill='both', pady=10)

        self.muslim = tk.Button(self, text="Malay Food", command=lambda: master.switch_frame(Muslim))
        self.muslim.pack(fill='both', pady=10)


class Chickenrice(tk.Frame):
    def __init__(self, master):
        tk.Frame.__init__(self, master)

        self.back = tk.Button(self, text="back", command=lambda: master.switch_frame(All_stores))
        self.back.pack()

        self.waitingtime = tk.Button(self,text="Calculate Waiting Time", command=lambda: master.switch_frame(Waitingtime))
        self.waitingtime.pack(pady=5)


class Muslim(tk.Frame):
    def __init__(self, master):
        tk.Frame.__init__(self, master)

        self.back = tk.Button(self, text="back", command=lambda: master.switch_frame(All_stores))
        self.back.pack()

        self.waitingtime = tk.Button(self,text="Calculate Waiting Time", command=lambda: master.switch_frame(Waitingtime))
        self.waitingtime.pack(pady=5)


class Waitingtime(tk.Frame):
    def __init__(self, master):
        tk.Frame.__init__(self, master)

        def current():
            try:
                no = int(self.number.get())
                no *= 2
                ### code to change waiting time for different stalls
                # if sel == 1:
                #     no *= 2
                # elif sel == 2:
                #     no *=3

                self.number.delete(0, tk.END)
                self.label = tk.Label(self,
                                      text=("The waiting time is: " + str(no) + " mins"))
                self.label.after(5000, self.label.destroy)
                self.label.pack()
                return no

            except ValueError:
                self.number.delete(0, tk.END)
                self.label = tk.Label(self, text=("Please enter a number"))
                self.label.after(2000, self.label.destroy)
                self.label.pack()
                return no


        self.title = tk.Label(self, text=
        "Enter number of people in the queue currently:")
        self.title.pack()

        # input box
        self.number = tk.Entry(self, text="fixedsys")
        self.number.pack(pady=15)

        # event button to calculate and display output
        self.current_button = tk.Button(self, text="Calculate",
                                        command=lambda: current())
        self.current_button.pack(pady=5)

        self.back = tk.Button(self, text="back", command=lambda: master.switch_frame(All_stores))
        self.back.pack(fill='both', pady=10)

if __name__ == "__main__":
    app = NTUCanteen()
    app.mainloop()

...