मेरे पास एक पायथन स्क्रिप्ट है जिसे सरल आरेख उत्पन्न करने के लिए मनमाने ढंग से फ़ॉन्ट्स में प्रदर्शित मनमानी तारों के सटीक आकार की गणना करने की आवश्यकता है। मैं आसानी से टिंकर के साथ कर सकता हूं।Tkinter में एक स्ट्रिंग के पिक्सेल में गणना की चौड़ाई और ऊंचाई प्लेटफॉर्म के बीच भिन्न क्यों होती है?
बाद नेड Batchelder यह उल्लेख किया है, मुझे पता चला कि फोंट का आकार मंच से मंच के लिए अलग है:
import Tkinter as tk
import tkFont
root = tk.Tk()
canvas = tk.Canvas(root, width=300, height=200)
canvas.pack()
(x,y) = (5,5)
text = "yellow world"
fonts = []
for (family,size) in [("times",12),("times",24)]:
font = tkFont.Font(family=family, size=size)
(w,h) = (font.measure(text),font.metrics("linespace"))
print "%s %s: (%s,%s)" % (family,size,w,h)
canvas.create_rectangle(x,y,x+w,y+h)
canvas.create_text(x,y,text=text,font=font,anchor=tk.NW)
fonts.append(font) # save object from garbage collecting
y += h+5
tk.mainloop()
परिणाम अजगर और/या सिस्टम के संस्करण पर निर्भर करने लगते हैं । यह तब तक एक सौदा ब्रेकर नहीं हो सकता है जब तक आप टिंकर के साथ चिपके रहते हैं, जो स्वयं के साथ संगत रहता है। लेकिन मेरे complete program वास्तविक ड्राइंग करने के लिए टिंकर का उपयोग नहीं करते हैं: यह केवल आउटपुट उत्पन्न करने के लिए अपने फ़ॉन्ट आकार की गणना पर निर्भर करता है (एसवीजी में या पाइथन स्क्रिप्ट के रूप में Nodebox पर भेजा जाना चाहिए)। और यह वहाँ चीजें वास्तव में गलत है कि है:
Output of mocodo http://grab.by/grabs/f67b951d092dd1f4f490e1469a53bca2.png
(।। कृपया image in real size को देखो ध्यान दें कि मुख्य इन outputs के लिए प्रयुक्त फ़ॉन्ट टाइम्स नहीं है, लेकिन Trebuchet MS)
अब मुझे लगता है कि इस तरह की विसंगतियों को टिंकर से बचा नहीं जा सकता है। आप किस अन्य क्रॉस-प्लेटफ़ॉर्म समाधान की सिफारिश करेंगे?
आप इन फ़ॉन्ट में पाठ का स्क्रीनशॉट लेने, और उन्हें मान आप हो रही है के साथ तुलना किया था:
यह आउटपुट की एक तस्वीर है? –
मुझे नहीं लगता कि आप किस प्रकार का "क्रॉस प्लेटफॉर्म" समाधान चाहते हैं ... विभिन्न प्लेटफॉर्म और विभिन्न हार्डवेयर विभिन्न फ़ॉन्ट संकल्पों और फ़ॉन्ट प्रतिपादन एल्गोरिदम का उपयोग करते हैं। मुझे शायद ही लगता है कि आप उन सभी के लिए निरंतर उत्तर प्राप्त कर सकते हैं। –
कृपया छवियों को अपडेट करें यदि आप कर सकते हैं, क्योंकि वे अभी चले गए हैं। – Nae