用python代码调用另一个文件

时间:2015-09-02 07:35:59

标签: python shell tkinter

我编写了以下代码在python中创建一个gui然后使用lambda我正在调用另一个文件。 此代码显示一些缩进问题。 roshan / pre.sh 是shell脚本的路径,我在这里调用另一个python文件。 我想创建这样的多个按钮,并使用我将调用的函数 不同的shell脚本。

应该有5个按钮(名为GRAPH1,GRAPH2,GRAPH3,GRAPH4,GRAPH5),并且在每个按钮上单击我希望加载另一个文件,我将放置我的图形。

例如,当我点击GRAPH1按钮时,我将命名为image1.py的另一个文件将加载并显示图形。

#!/usr/bin/python

import Tkinter, subprocess

class simpleapp_tk(Tkinter.Tk):
    def __init__(self,parent):
        Tkinter.Tk.__init__(self,parent)
        self.parent = parent
        self.initialize()

    def initialize(self):
        self.grid()

    clusterB = Tkinter.Button(self, text ="preprocessing",width=13,font = "Georgia 10 bold")
    clusterB.grid(row=5,sticky=Tkinter.W,padx=3)
    clusterB.config(command = lambda:clusters())

    def clusters():
    process = subprocess.Popen(["roshan/pre.sh"],shell=False,
        stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
    while True:
        out = process.stdout.readline()
        if out == '' and process.poll() is not None:
            break
        print out

    return
if __name__ == "__main__":
    app = simpleapp_tk(None)
    app.title('Results and Graphs')
    app.mainloop()

1 个答案:

答案 0 :(得分:2)

除了使用shell打开python文件之外,如果它在同一目录中并且像模块一样使用它,它总是可以导入它。

import image1
thing = image1.function_in_image1()

您也可以选择使用操作系统直接运行它。

import os
os.system(r"C:\path\to\image1.py")

在您的示例中,我发现了缩进问题。改变这个:

def clusters():
process = subprocess.Popen(["roshan/pre.sh"],shell=False,
    stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
while True:
    out = process.stdout.readline()
    if out == '' and process.poll() is not None:
        break
    print out

return

到此:

def clusters():
    process = subprocess.Popen(["roshan/pre.sh"],shell=False,
        stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
    while True:
        out = process.stdout.readline()
        if out == '' and process.poll() is not None:
            break
        print out

    return