如何使用Popen和GUI tkinter打印到打印机

时间:2016-09-26 05:23:52

标签: python printing tkinter

我使用来自this question的代码打印到热EPSON TM-T82打印机但是当我使用tkintermainloop() python进行修改时,我不会直接打印我的数据,直到我关闭布局GUI 。我希望这个脚本可以在不关闭布局GUI的情况下打印出我的数据。

这是我的代码:

import subprocess
from Tkinter import *

class tes_print:
   def __init__(self):
       self.printData()

   def printData(self):
       data = " MY TEXT "
       lpr = subprocess.Popen("/usr/bin/lpr", stdin=subprocess.PIPE, shell=True)
       lpr.stdin.write(data)

root = Tk()
app2 = tes_print()
root.mainloop()

1 个答案:

答案 0 :(得分:0)

您正在体验缓冲。 write将写入一个缓冲区,该缓冲区实际上并未传递给lpr,直到它填满或您明确刷新它。

正在运行lpr.communicate()会将其刷新并允许lpr运行完成。

lpr = subprocess.Popen(['lpr'], stdin=subprocess.PIPE)
stdout, stderr = lpr.communicate(input=data)