Мне нужно, чтобы кнопки внутри LeftFrame меняли свой внешний вид при нажатии. В классе AccOne я попытался сделать left_frame.acc1.config(releif='SUNKEN')
, но я получил NameError: имя 'left_frame' не определено. Я пытался сделать left_frame глобальным, но безуспешно.
Вот сценарий.
class MainApp(Tk):
def __init__(self, *args, **kwargs):
Tk.__init__(self, *args, **kwargs)
container = Frame(self)
container.pack()
container.rowconfigure(4, weight=1)
container.columnconfigure(2, weight=1)
right_frame = RightFrame(container, self)
left_frame = LeftFrame(container, right_frame)
left_frame.pack(side=LEFT)
right_frame.pack()
class RightFrame(Frame):
def __init__(self, parent, controller, *args, **kwargs):
Frame.__init__(self, parent, *args, **kwargs)
self.frames = {}
for F in (Welcome, AccOne, AccTwo, AccThree, AccFour, AccFive):
frame = F(self, self)
self.frames[F] = frame
self.show_frame(Welcome)
def show_frame(self, cont):
frame = self.frames[cont]
frame.grid(row=0, column=0)
frame.tkraise()
class LeftFrame(Frame):
def __init__(self, parent, controller, *args, **kwargs):
Frame.__init__(self, parent)
acc1 = Button(self, text="Account 1", width=12, height=3, command=lambda: controller.show_frame(AccOne))
acc1.pack()
Я подумал, что имеет смысл настроить кнопку под def show_frame(self,cont):
, но я не знаю, с чего начать, так как этот метод не находится под LeftFrame.