Этот код работает нормально. MyApp - это класс, выполняющий всю работу, а MyGUI - это пользовательский интерфейс, отображающий и запрашивающий данные из MyApp.
class MyGUI(): # displays results from MyApp and sends request to MyApp (e.g. fetch prices new prices)
def __init__(self):
print("GUI running")
def user_request_price(self,ticker):
self.req_price(ticker)
# methods I request from MyApp
def req_price(self,ticker):
app.get_price(ticker)
# methods I receive from MyApp
def print_price(self,val,price):
print (val,":",price)
class MyApp(): # does a lot of stuff, e.g. fetch prices from a server
def __init__(self):
self.id = 0
self.gui = MyGUI() # start gui
# methods called by GUI
def get_price(self, ticker):
if ticker == "MSFT": price = 20.23
self.output_price(ticker,price)
# methods sent to GUI
def output_price(self,ticker,price):
self.gui.print_price(ticker,price)
if __name__ == "__main__":
app = MyApp()
app.gui.user_request_price("MSFT")
Теперь я хочу поместить графический интерфейс в отдельный модуль, поэтому создайте файл модуля gui.py и импортируйте его в файл MyApp:
from gui import *
и все. Где я борюсь: как выглядит gui.py и как MyGUI () может получить доступ к методам MyApp? Разумно ли делать это разделение? Любые другие предложения по структурированию?