Я пытаюсь создать сценарий, который создает экземпляр класса GUI, который сам по себе имеет подклассы для представления различных страниц, которые я хочу отобразить.
Цель состоит в том, чтобы создать файл последовательности, который вызывает конкретную страницу графического интерфейса для отображения, и как только эта страница графического интерфейса отображается и нажимается кнопка, она запускает последовательность из файла последовательности, который затем определяет, какой графический интерфейс пользователяотображаемых страниц.
Seqeuncer выглядит примерно так (критерии для отображения тестовых страниц упрощены)
import gui
class Sequencer():
def __init__(self):
pass
def run_gui(self):
# Create instance of the Test GUI
self.my_gui = gui.TestGUI()
self.my_gui.mainloop()
def run_test(self, entry):
if x = 1:
gui.TestGUI().show_page(PageOne)
if x = 2:
gui.TestGUI().show_page(PageTwo)
Графический интерфейс выглядит так:
import sequencer
class TestGUI(tk.Tk):
def __init__(self):
# Initialize the container
tk.Tk.__init__(self)
container = tk.Frame(self)
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
# Make the container a fixed size
tk.Tk.resizable(self, False, False)
# Set up the pages for the GUI
self.pages = {}
list_of_pages = [
PageOne,
PageTwo
]
for P in list_of_pages:
frame = P(container, self)
self.pages[P] = frame
frame.grid(row=0, column=0, sticky="nsew")
# Set the Main Page
self.show_page(MainPage)
def show_page(self, page):
frame = self.pages[page]
frame.tkraise()
class PageOne(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
entry = tk.Entry(self, width=40, font="Arial 16", justify="center")
entry.place(relx=0.5, rely=0.5, anchor="center")
# Create Binding for the Return Key
entry.bind("<Return>", lambda event: sequencer.Sequencer().run_test(entry.get()))
class PageTwo(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
Я тогдасоздайте скрипт верхнего уровня (main.py), который создает экземпляр Sequencer и запускает графический интерфейс. Вместо того, чтобы показывать страницы, которые должны быть показаны, я получаю сообщение об ошибке.
Я делаю это неправильно?