2010-06-01 16 views
5

मैं एक अजगर टिंकर कैनवास की सामग्री मुद्रित करने की कोशिश कर रहा हूं। मैंने पोस्टस्क्रिप्ट फ़ाइल बनाने के लिए कैनवास की पोस्टस्क्रिप्ट विधि का उपयोग करने का प्रयास किया है, लेकिन मुझे एक खाली पृष्ठ मिलता है। मुझे पता है क्योंकि यह विजेट एम्बेडेड है, और इन्हें पोस्टस्क्रिप्ट विधि द्वारा प्रस्तुत नहीं किया जाता है।मुद्रण पायथन टिंकर आउटपुट

इससे पहले कि मैं एक और प्रिंटर-अनुकूल लेआउट बनाने के लिए अपने प्रोग्राम को फिर से लिखूं, क्या कोई इस समस्या से संपर्क करने का एक तरीका सुझा सकता है? मैंने जो प्रोग्रामिंग पुस्तकें कभी पढ़ी हैं, वे कुछ हद तक हाथ से चलने वाले प्रिंटर पर आउटपुट भेजने की समस्या से संपर्क करते हैं: "यह एक कठिन समस्या है जो ऑपरेटिंग सिस्टम के साथ बातचीत करने पर निर्भर करती है।" स्क्रीन पर प्रिंटिंग से संबंधित सभी पृष्ठों की वजह से मुझे संसाधनों को खोजने में भी मुश्किल समय है।

मैं उबंटू 9.04 पर पायथन 2.6 का उपयोग कर रहा हूं।

उत्तर

0

अच्छा, यह एक कठिन समस्या है जो ऑपरेटिंग सिस्टम के साथ बातचीत करने पर निर्भर करती है। (क्षमा करें, विरोध नहीं कर सका!)

कैनवास-टू-पोस्टस्क्रिप्ट समाधान केवल कैनवास पर खींची गई चीज़ों के लिए काम करता है - यह एम्बेडेड विंडो को संभाल नहीं करता है। ऐसे पुस्तकालय हैं जो कैनवास को पीडीएफ में परिवर्तित कर सकते हैं, लेकिन मुझे उनके साथ कोई अनुभव नहीं है और यह नहीं पता कि वे एम्बेडेड विंडो को संभालते हैं या नहीं (मुझे अनुमान नहीं है)।

pdflib है, जो एक व्यावसायिक सी लाइब्रेरी है जिसे पायथन और टीसीएल (और इस प्रकार, टिंकर) के साथ एकीकृत किया जा सकता है। मुझे पुस्तकालय के साथ कोई अनुभव नहीं है, और मुझे लगता है कि यह शायद एम्बेडेड विंडोज़ को संभाल नहीं लेता है। मुझे लगता है कि यह अधिक प्राचीन है - आपको पृष्ठ, शीर्षलेख, पाद लेख इत्यादि बनाने के लिए आदेश देना

यह निश्चित रूप से रुपये के साथ एक समस्या है; हमेशा होता है, संभवतः हमेशा ऐसा होगा क्योंकि क्रॉस प्लेटफ़ॉर्म तरीके से समस्या को हल करने के लिए किसी से भी अधिक मांग या रुचि नहीं लगती है।

+0

इस समस्या के लिए, मुझे लगता है कि मैं सीधे कैनवास पर ड्राइंग करके काम को फिर से कर सकता हूं। मैं या तो प्रिंटिंग के लिए एक विशेष समारोह के रूप में ऐसा करूंगा, या उसी तरह स्क्रीन कार्यक्षमता को फिर से कर दूंगा। भविष्य के संदर्भ के लिए, क्या कोई gui पैकेज (यानी wxpython) है जो मुद्रण के लिए अधिक अनुकूल है? या क्या लोग अक्सर इस दृष्टिकोण को लेते हैं, स्क्रीन के लिए एक संस्करण कोडिंग और प्रिंटिंग के लिए अलग-अलग कोडिंग करते हैं? – Eric

+0

@Eric: मुझे पता है कि wxPython को मुद्रण के लिए कुछ समर्थन है, लेकिन मैंने इसका कभी भी उपयोग नहीं किया है, इसलिए मुझे नहीं पता कि यह कितना मजबूत है। यदि प्रिंटिंग एक सौदा-ब्रेकर है तो आप wxPython को स्थापित करने का प्रयास करना चाहेंगे और यह देखने के लिए डेमो चला सकते हैं कि आपको क्या चाहिए। –

0

मुझे लगता है कि आप टिंकर की सीमा तक पहुंच रहे हैं। यदि विगेट्स के लिए नहीं है, तो एक और तरीका एक ही छवि को पीआईएल छवि-ड्रा ऑब्जेक्ट पर खींचना है क्योंकि दोनों में समान एपीआई हैं।

पीआईएल में छविग्राब का उपयोग करके इच्छित विंडो क्षेत्र के स्क्रीन प्लेस को प्रोग्रामिक रूप से ले जाने के लिए एक हैकी वर्कअराउंड होगा।

wxPython एक सभ्य विकल्प है। व्यक्तिगत रूप से मैं क्यूटी पसंद करता हूं, यह निश्चित रूप से उत्कृष्ट प्रिंटर समर्थन है। ग्राफिक्स व्यू फ्रेमवर्क भी उत्कृष्ट है।

1

यह बताता है कि आपको पोस्टस्क्रिप्ट निर्यात करने से पहले कैनवास अपडेट करना होगा। इसलिए जैसा: समाधान के लिए रियो here को

from Tkinter import * 

root = Tk() 
canvas = Canvas(bg='white', width = 200, height = 200) 
canvas.pack() 

canvas.create_line(0, 0, 199, 199, fill="blue", width = 5) 
canvas.create_line(0, 199, 199, 0, fill="blue", width = 5) 

canvas.update() 
canvas.postscript(file = "x.ps") 

root.mainloop() 

धन्यवाद।

+0

यह वास्तव में मेरी समस्या थी। धन्यवाद! –

संबंधित मुद्दे