0

libdmtx を使用して、次のコードで png ファイルから 2D コードを読み取ります。

#!/usr/bin/python
import os
import Tkinter
from Tkinter import *
from tkFileDialog import askopenfilename

top = Tkinter.Tk()
top.geometry("200x200")
content = StringVar()
label = Message( top, textvariable=content, width='180' )
content.set ("Choose file to read 2D code")
label.pack()

def selector():
   filename = askopenfilename() 
   cmd = "dmtxread -n %s" % (filename)
   res = Text(top)
   res.insert (INSERT, os.system(cmd))
   res.pack()

B = Tkinter.Button(top, text ="Choode file", command = selector)
B.pack()

top.mainloop()

すべて正常に動作しますが、GUI では完全な出力を取得できません。0 しかありませんが、コンソールでは 2D コードの内容を取得します。GUI で完全な出力を取得するにはどうすればよいですか?

4

1 に答える 1

2

これは、 が実行したコマンドの を返さos.systemず、終了ステータス (この場合は ) を返すだけだからです。stdout0

subprocess次のようにモジュールを使用する必要があります。

import subprocess

def selector():
    filename = askopenfilename() 
    p = subprocess.Popen(["dmtxread", "-n", filename], stdout=subprocess.PIPE)
    stdout, stderr = p.communicate()
    res.insert(INSERT, stdout)
    res.pack()
于 2013-04-12T12:13:54.280 に答える