Код предназначен для расчета времени ожидания для различных продуктовых киосков (куриный рис и малайская еда) в зависимости от количества людей в очереди. В настоящее время обе продуктовые лавки ведут на одну и ту же страницу с одинаковыми функциями. Поэтому одно и то же время ожидания независимо от того, какой ларек. Тем не менее, мне нужно другое время ожидания для разных киосков.
Но для этого мне нужно знать, как получается «Рассчитать время ожидания». Я слаб с синтаксисом 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()