将Python代码嵌入GUI中
我写了一些很复杂的Python代码,简单来说,它会根据用户输入的内容,输出一大串DNA序列,还有一些图表和很多公式。我想把这段代码放到我可能会用wxPython或Tkinter制作的用户界面里。但我不知道怎么把我的代码和用户界面连接起来。请帮帮我!谢谢!
4 个回答
给你的最好建议就是,不要急着去做真正的图形用户界面(GUI)。学习图形界面编程并不是一件简单的事,你应该慢慢来,逐步提升。
选择一个框架(比如Tkinter、wxPython或者Qt),然后从最简单的教程开始学习。接着,逐渐尝试更难的任务,直到你积累了足够的经验,能够顺利完成你想做的项目。
一个很好的入门地方是这个 wxPython 教程。
图形用户界面(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测序模块也不需要知道输入来自哪里或者输出是怎么显示的。