Я смотрю here. Я могу разделить мою страницу (фрейм) на два файла. Например, это мой первый файл: main.py
сплит более одного файла tkinter frame
from Tkinter import *
from halsatu import *
class Biasa(Tk):
def __init__(self, *args, **kwargs):
Tk.__init__(self, *args, **kwargs)
container = Frame(self)
container.pack(expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (StartPage, PageOne, PageTwo):
frame = F(container, self)
frame.grid(row=0, column=0, sticky='news')
self.frames[F] = frame
self.show_frame(StartPage)
def show_frame(self, c):
frame = self.frames[c]
frame.tkraise()
class StartPage(Frame):
def __init__(self, parent, controller):
Frame.__init__(self, parent)
label = Label(self, text='Ini halaman Awal')
label.pack()
button = Button(self, text='ke Halaman 1',
command=lambda: controller.show_frame(PageOne))
button.pack()
button2 = Button(self, text='ke Hal. 2',
command=lambda: controller.show_frame(PageTwo))
button2.pack()
class PageTwo(Frame):
def __init__(self, parent, controller):
Frame.__init__(self, parent)
label = Label(self, text='Sekarang \nIni halaman Dua lho..')
label.pack()
button = Button(self, text='ke Halaman 1',
command=lambda: controller.show_frame(PageOne))
button.pack()
button2 = Button(self, text='ke Hal. Awal',
command=lambda: controller.show_frame(StartPage))
button2.pack()
if __name__ == '__main__':
app = Biasa()
app.mainloop()
Тогда это мой halsatu.py:
from Tkinter import *
class PageOne(Frame):
def __init__(self, parent, controller):
Frame.__init__(self, parent)
label = Label(self, text='Kalau yang Ini halaman Satuuuuuuuuuuuuuuuuuu')
label.pack()
button = Button(self, text='ke Halaman Awal',
command=lambda: controller.show_frame(StartPage))
button.pack()
button2 = Button(self, text='ke Hal. 2',
command=lambda: controller.show_frame(PageTwo))
button2.pack()
Этот код может работать. Но когда я иду на страницу, я больше не могу вернуться на StartPage. Как разбить так много страниц (кадров) на отдельные файлы?
Вы получаете какую-либо ошибку? –
есть. Когда я перехожу на страницу PageOne, а затем я нажимаю на первую кнопку, появляется эта ошибка: Исключение в обратном вызове Tkinter Traceback (последний последний звонок): Файл «/usr/lib/python2.7/lib-tk/Tkinter.py ", строка 1489, в __call__ return self.func (* args) Файл" /home/muktyas/Dropbox/py/tk/150709oop/0914/halsatu.py ", строка 10, в command = lambda: controller .show_frame (StartPage)) NameError: глобальное имя 'StartPage' не определено –
recobayu
Да, я так и думал, что 'StartPage' или' PageTwo' не импортируется в ваш 'halsatu.py', поэтому они не будут доступны –