Я пытаюсь создать приложение tkinter с несколькими кадрами.
В моем коде добавление self.
(как в self.name
) перед любым объявлением в классе settings
означает, что окно не откроется. Почему?
class app(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self._frame = None
self.switchFrame(settings)
def switchFrame(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 settings(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
lengthSliderTitle = "Set the race length in metres"
tk.Label(master, text = lengthSliderTitle).grid(column= 0, row = 1)
raceLengthSlider = tk.Scale(master, from_=1000, to=10000, length= 600, tickinterval = 1000, orient=tk.HORIZONTAL)
raceLengthSlider.grid(column = 0, row = 2)
racersNumSliderTitle = "Set the amount of racers"
tk.Label(master, text = racersNumSliderTitle).grid(column = 0, row = 4)
racersNumSlider = tk.Scale(master, from_= 2, to= 50, length = 600, tickinterval = 5, orient=tk.HORIZONTAL)
racersNumSlider.grid(column= 0, row = 5)
finishScreen1btn = tk.Button(master, text = "Done", command = self.finishScreen1)
finishScreen1btn.grid(column = 0, row = 6)
def finishScreen1():
currentRace.length = raceLengthSlider.get()
currentRace.numRacers = racersNumSlider.get()
master.switchFrame(animalsettings).pack()
switchFrame
- это то, что основное приложение использует для переключения между кадрами. Каждый кадр имеет структуру, аналогичную классу settings
.
Строка finishScreen1btn = tk.Button(master, text = "Done", command = self.finishScreen1)
- это то, из-за чего окно не появляется. Что происходит, так это то, что в терминал Python не выводятся никакие ошибки, но и окно не открывается.