1

ユーザーが入力した年のカレンダー (グレゴリオ暦) を印刷する Python (PyGTK) で小さなプログラムを作成しています。

これが私のコードです:

#!/usr/bin/env python

import pygtk, gtk, subprocess
pygtk.require("2.0")

class Base:
    def printing(self, widget):
        text = self.textbox.get_text()
        printingit = "cal -y %s | lpr" % (text)
        process = subprocess.Popen(printingit.split(), stdout=subprocess.PIPE)
        output = process.communicate()[0]   

    def __init__(self):
            self.win = gtk.Window(gtk.WINDOW_TOPLEVEL)
            self.win.set_position(gtk.WIN_POS_CENTER)
            self.win.set_size_request(350, 200)
        self.win.set_resizable(False)
        self.win.set_title("Calendar")
        self.win.connect('destroy',lambda w: gtk.main_quit())

        self.textbox = gtk.Entry()
        self.textbox.set_size_request(70, 30)

        self.lable = gtk.Label("Year:")

        self.button = gtk.Button("Print")
        self.button.set_size_request(60, 45)
        self.button.connect("clicked", self.printing)

        box = gtk.Fixed()
        box.put(self.lable, 160, 25)
        box.put(self.textbox, 140, 40)
        box.put(self.button, 145, 100)

        self.win.add(box)
        self.win.show_all()

    def main(self):
        gtk.main()

if __name__ == "__main__":
    base = Base()
    base.main()

コマンドを実際に印刷するときは機能しませんcal -y %s | lpr % (text)。テキストボックスのテキストを取得する必要がある最終的なコマンドに置き換え、希望するものに変更するようにしましたcal -y 2015 | lpr。それを端末に入れてみたところ、いつものように機能しましたが、とても混乱しています!

ターミナルでプログラムを実行しましたが、印刷しようとすると次のメッセージが表示されます。

Usage: cal [general options] [-hjy] [[month] year]
   cal [general options] [-hj] [-m month] [year]
   ncal [general options] [-bhJjpwySM] [-s country_code] [[month] year]
   ncal [general options] [-bhJeoSM] [year]
General options: [-NC3] [-A months] [-B months]
For debug the highlighting: [-H yyyy-mm-dd] [-d yyyy-mm]

誰かがなぜこれが起こっているのかを理解していれば、私は非常に感謝しています! よろしくお願いします=D

  • ハリー
4

1 に答える 1