Графический интерфейс будет обрабатывать как ваш ввод, так и вывод.Поэтому, если ваш код в настоящее время представляет собой большой, длинный скрипт, который читает и записывает данные на консоль, первое, что вы захотите сделать, - это преобразовать его в класс или набор автономных функций (в зависимости от вашего кода), которые принимают вводв качестве аргументов и вернуть результаты.Если вы напишите его правильно, вы даже можете сохранить консольное приложение, делая класс или функции доступными для импорта другими приложениями.
Пример псевдокода:
# stuff.py
class StuffDoer:
def __init__(self, val1, val2, ...):
self.val1 = val1
self.val2 = val2
def calculate_sequence(self):
# do some stuff
return sequence
def create_graph(self, target_folder):
# generate the graph and save it
return path_to_graph
if __name__ == '__main__':
# the console interface
val1 = raw_input('Enter value 1:')
val2 = raw_input('Enter value 2:')
s = StuffDoer(val1, val2)
seq = s.calculate_sequence()
print('Sequence: %s' % seq)
path = s.create_graph('/temp')
print('Wrote graph to %s' % path)
Возможно, вы уже знаете это,но код внутри if __name__ == '__main__':
будет выполнен, только если вы запустите модуль напрямую.Если вы вместо этого import stuff
из другого модуля (например, своего кода GUI), вы просто получите доступ к определению класса stuff.StuffDoer
.
Вот пример того, что происходит в коде GUI.После некоторого события интерфейса, такого как нажатие кнопки, вы вызовете функцию, которая извлекает входные данные из некоторых полей вашей формы, передает их экземпляру StuffDoer
и вызывает любые функции класса, которые вам нужны для генерации ваших результатов.Если проблем не было, вы обновляете форму с созданными результатами, и все готово.Детали того, как это сделать, зависят от вашего инструментария GUI.
Ваш GUI не должен знать, как рассчитываются последовательности ДНК, а вашему модулю секвенирования ДНК не нужно знать, откуда поступает входной сигнал иликак отображается вывод.