3

Python Mega Widgets と Tkinter の両方で、SQlite3 データベースへのインターフェイスであるインターフェイスを作成しました。クエリ結果はリストとして返され、ディスプレイのメイン フレームにあるメモ フィールドに表示されます。

メモ フィールドの内容をデフォルトのプリンタから印刷するボタンから起動される小さな関数を作成できますか?

何かのようなもの:

command = printMemo  #argument within the print button


#the print function I am looking for in pseudocode
def printMemo(memo):
       print memo
4

4 に答える 4

2

これは、Windows、Linux、Mac/Unixのいずれを使用しているかによって異なります。このPythonスクリプトを実行しているシステムに応じて、答えはそれに応じて変わります。

ウィンドウズ

Windows上のプリンターに印刷ジョブを送信するには、win32print http://timgolden.me.uk/python/win32_how_do_i/print.htmlを使用します。

LINUX / UNIX / MAC

linux / unix / macシステムの場合、pkipplibライブラリを使用してCUPS(http://en.wikipedia.org/wiki/CUPS)を活用できます。CUPSを実行しているコンピューターは、クライアントコンピューターからの印刷ジョブを受け入れて処理できるホストです。それらを適切なプリンタに送信します。CUPSベースの印刷については、 http: //www.pykota.com/software/pkipplibを参照してください。

pkipplibは、PyPiを介してインストールできるサードパーティのライブラリです。の使用に精通している場合はpip、実行するだけです。

pip install pkipplib

そして、pkipplibPythonモジュールをスクリプトにインポートできるようになります。上記のリンクの例のように、linux / unix / mac CUPSプリンターに接続した後、印刷を実行できます。このような:-

# CUPS' API
from pkipplib import pkipplib

# Create a CUPS client instance 
# cups = pkipplib.CUPS(url="http://server:631, \
#                      username="john", \
#                      password="5.%!oyu")
cups = pkipplib.CUPS()

# High level API : retrieve info about job 3 :
answer = cups.getJobAttributes(3)
print answer.job["document-format"]
# That's all folks !

# Lower level API :
request = cups.newRequest(pkipplib.IPP_GET_PRINTER_ATTRIBUTES)
request.operation["printer-uri"] = ("uri", 
                                    cups.identifierToURI("printers", "HP2100"))
for attribute in ("printer-uri-supported",                                     
                  "printer-type",
                  "member-uris") :
    # IMPORTANT : here, despite the unusual syntax, we append to              
    # the list of requested attributes :
    request.operation["requested-attributes"] = ("nameWithoutLanguage", attribute)

# Sends this request to the CUPS server    
answer = cups.doRequest(request)    

# Print the answer as a string of text
print answer
于 2012-11-03T13:37:06.397 に答える
0

これを行う最も簡単な方法は、テキスト ファイルを作成し、OS の印刷コマンド (*nix の lpr など) を使用することです。必要に応じてマークアップ (groff または latex) を組み込むことができます) Postscript または PDF ファイルを作成することもできますが、それははるかに手間がかかります!

これには、印刷コマンドを構成可能 (環境または構成ファイル) にすることができるため、複数の OS で動作するという追加の利点があります。

于 2015-12-15T17:17:57.907 に答える
-1

良い質問。私の答えが役立つことを願っています。

注:私はpython 3.3を使用しているため、tkinterとTkinterをインポートする必要があります...

text1以下の手続き型コード行では、テキスト変数を文字列変数 (ここでは)として定義する必要があります= StringVar()

次に、エントリ ウィジェット (ここではtext_entry) を作成するときに、ユーザーがボタンを押したときに入力された値を受け取る変数を示します(.., textvariable = text1)

次に、関数を使用してボタン ウィジェットを作成しますcommand =(ここでprint_text(*args))は、ユーザーが入力したものを出力します。

text1 はリスト (またはタプルかもしれませんが、確かではありません) であるため、属性の.getメソッドを使用して入力された値を取得する必要があります。ここにそのprint(text1.get())

さらにいくつか追加しました。text_entry.focus()ユーザーが入力スペースをクリックする必要がないように、プログラムの実行時にそのウィジェットにカーソルを置き、root.bind('<Return>', print_text)ユーザーがヒットEnterして印刷できるようにします。

from tkinter import *
from tkinter import ttk

def print_text(*args):
    try:
        print(text1.get())
    except ValueError:
        pass

root = Tk()
root.title("Little tkinter app for printing")

mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column = 0, row = 0, sticky = (N,W,E,S))

mainframe.columnconfigure(0, weight = 1)
mainframe.rowconfigure(0, weight = 1)

text1 = StringVar()
text_entry = ttk.Entry(mainframe, width = 20, textvariable=text1)
text_entry.grid(column = 1, row = 2, sticky = (N,W,E,S))

ttk.Button(mainframe, text = "Print!", command =
           print_text(text1)).grid(column = 1, row = 3, sticky = (E))

for child in mainframe.winfo_children():
    child.grid_configure(padx = 5, pady = 5)

text_entry.focus()
root.bind('<Return>', print_text)

root.mainloop()
于 2013-01-18T03:09:19.453 に答える