Встраивание кода Python в графический интерфейс - PullRequest
0 голосов
/ 31 августа 2011

Я создал некоторый код Python, который действительно сложен, но в основном запрашивает ввод, а затем выводит огромную последовательность ДНК в зависимости от заданного ввода, а также некоторые графики и многие уравнения.Я хотел бы встроить этот код в пользовательский интерфейс, который я, скорее всего, сделаю с помощью wxPython или Tkinter.Я не понимаю, как подключить мой код в пользовательский интерфейс.Пожалуйста помоги!Спасибо!

Ответы [ 4 ]

1 голос
/ 01 сентября 2011

Лучший совет для вас - не начинать пытаться создать настоящий графический интерфейс. Изучение программирования с помощью графического интерфейса не является тривиальным, и вы должны начать медленно и доводить дело до реального.

Выберите фреймворк (Tkinter, wxPython, Qt) и начните с самого простого учебника, который вы можете найти. Затем старайтесь постепенно усложнять задачи, пока у вас не будет достаточно опыта, чтобы хорошо справиться со своей реальной задачей.

1 голос
/ 31 августа 2011

Хорошее место для начала - учебник wxPython .

0 голосов
/ 31 августа 2011

Графический интерфейс будет обрабатывать как ваш ввод, так и вывод.Поэтому, если ваш код в настоящее время представляет собой большой, длинный скрипт, который читает и записывает данные на консоль, первое, что вы захотите сделать, - это преобразовать его в класс или набор автономных функций (в зависимости от вашего кода), которые принимают вводв качестве аргументов и вернуть результаты.Если вы напишите его правильно, вы даже можете сохранить консольное приложение, делая класс или функции доступными для импорта другими приложениями.

Пример псевдокода:

# 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 не должен знать, как рассчитываются последовательности ДНК, а вашему модулю секвенирования ДНК не нужно знать, откуда поступает входной сигнал иликак отображается вывод.

0 голосов
/ 31 августа 2011

Ваш вопрос не совсем понятен, но если пользовательский ввод - это код Python, вы хотите найти виджет редактора кода Python для своего GUI-инструментария.

Например, если вы использовали PyQT, вы могли бы использовать QScintilla , см. здесь для примера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...