Pythonコンソールからの出力

私は次の問題を抱えています。私は別のファイルで別々のpython関数を持っています。私が必要とするときに私はそれを呼び出す。

現在、私はtkinterでguiを作成しようとしています。私が呼び出す関数の出力を表示する必要があります。私はpythonコンソールが生成するものを読むと思いますが、サブプロセスを使用しようとしましたが機能しませんでした。stdoutを読み込んでtkinterリストボックスに渡す必要があると思いますが、試したメソッドは機能しませんでした。

from Tkinter import *
import ConfigParser, sys
import subprocess as sub
from my_update import *
from  mac_generator import *



class testing:

    def __init__(self, parent):
        self.parent=parent
        status_file = "status.ini"
        status = ConfigParser.ConfigParser()
        status.read(status_file)
        self.mac_last = status.get('status', 'mac_last')
        self.parent=parent
        Button(parent, text="Upgrade", command=self.upgradeproc).pack(side=BOTTOM, padx=10, pady=10)
        self.ff=Frame(self.parent, bd=1, relief=SUNKEN)
        Label(self.ff, text="LAST MAC: " + self.mac_last, justify=LEFT, anchor=W, width=28).pack()
        self.ff.pack(side=TOP, pady=15)


    def upgradeproc(self):
        list = Listbox(root, width=50, height=30)
        list.pack()
        proc = sub.Popen(testgen(), stdout=sub.PIPE)
        for line in iter(proc.stdout.readline, ''):
            list.insert(END, line)



if __name__ == '__main__':
    root = Tk()
    root.resizable(width=FALSE, height=FALSE)
    root.geometry("350x350")
    root.title('Test')
    testing(root)
    root.mainloop()
0
testgen()の結果は、popenで開くことができるコマンドラインですか? testgen を編集できますか?
追加された 著者 Bryan Oakley,
testgen を修正できますか?実際に印刷されているか、シェルから実行したときに実際に印刷される値のリストが実際に返されるかは分かりますか?
追加された 著者 Bryan Oakley,
proc.stdoutの行でを試してください:
追加された 著者 cdarke,
すでにそれを試して、動作しませんでした。私はその行sub.Popenでtestgen()を呼び出すことはできないと思うので、それがうまくいきません。
追加された 著者 Thomas,
実際にはコマンドラインではなく、私が呼び出すPython関数です。 Popenを使うのは間違いでしょう。だから私は、関数がPythonシェルに生成するすべてのデータを読む方法を知らない。私が望むのは、すべてのデータをPythonシェルから取得し、それをリストボックスに入れることです。 Pythonシェルでは、スクリプトの動作を確認していますが、Pythonシェルからその情報を取得する方法がわかりません。LinuxでMS Windowsを使用しています。
追加された 著者 Thomas,
それはシェルで値を出力するだけでは何も返しません。
追加された 著者 Thomas,

答えはありません

0