将python代码嵌入到GUI中

时间:2011-08-31 15:01:57

标签: python user-interface wxpython

我创建了一些非常复杂的Python代码,但它基本上要求输入,然后根据给定的输入输出一个巨大的DNA序列,以及一些图形和许多方程式。我想将此代码嵌入到用户界面中,我很可能会使用wxPython或Tkinter。我不明白如何将我的代码插入用户界面。请帮忙!谢谢!

4 个答案:

答案 0 :(得分:1)

一个好的起点是wxPython tutorial

答案 1 :(得分:1)

最好的建议是不要开始尝试构建实际的GUI。学习GUI编程并不是一件容易的事情,你应该慢慢开始并努力实现真实的东西。

选择一个框架(Tkinter,wxPython,Qt)并从您可以找到的最简单的教程开始。然后尝试逐步更难的任务,直到你有足够的经验来完成你的真实任务。

答案 2 :(得分:0)

您的问题并不十分明确,但如果您想要的用户输入是Python代码,那么您希望为您的GUI工具包找到一个Python代码编辑器小部件。

例如,如果您使用的是PyQT,则可以使用QScintilla,请参阅here for an example

答案 3 :(得分:0)

GUI将处理您的输入和输出。因此,如果您的代码当前是一个从控制台读取和写入的大而长的脚本,那么您要做的第一件事就是将其重构为一个类或一组独立函数(取决于您的代码),它们接受输入作为参数,并返回结果。如果你正确地编写它,你甚至可以保留你的控制台应用程序,同时使类或函数可供其他应用程序导入。

伪代码示例:

# 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__':中的代码。如果您从另一个模块(例如您的GUI代码)改为import stuff,您将只能访问stuff.StuffDoer类的定义。

以下是GUI代码中发生的事情的示例。在某些界面事件(如单击按钮)上,您将调用一个函数,该函数从表单上的某些字段检索输入,将它们提供给StuffDoer的实例,并调用生成结果所需的任何类函数。如果没有问题,您可以使用生成的结果更新表单,然后就完成了。有关如何执行此操作的详细信息取决于您的GUI工具包。

您的GUI不需要知道DNA序列的计算方式,您的DNA测序模块不需要知道输入的来源或输出的显示方式。