2010-08-04 13 views
8

मैं अपने वर्तमान सॉफ्टवेयर प्रोजेक्ट का एक हिस्सा फिर से डिजाइन कर रहा हूं, और के बजाय हाइपरलिंक्स का उपयोग करना चाहता हूं। मैं वास्तव में Text विजेट का उपयोग नहीं करना चाहता था, लेकिन जब मैं इस विषय को गुगल करता हूं तो मुझे वह सब मिल सकता है। वैसे भी, मैं इस का एक उदाहरण पाया है, लेकिन यह त्रुटि मिलती रहती: जब मैं कोड की इस पंक्ति मॉड्यूल के लिएटिंकर टेक्स्ट विजेट में हाइपरलिंक?

hyperlink = tkHyperlinkManager.HyperlinkManager(text) 

कोड (IDLE का प्रयोग करके) जोड़ने

TclError: bitmap "blue" not defined 

here स्थित है और स्क्रिप्ट के लिए कोड here

किसी के पास कोई विचार है?

जो समस्याएं दे रही हैं, वह कहती है कि foreground="blue", जिसे टिंकर में रंग के रूप में जाना जाता है, है ना?

+0

"समस्याएं दे रही है"? एक ट्रेसबैक की तरह, शायद? यह क्या है? – msw

+0

यह सही त्रुटि है [यहां] (http://pastebin.com/JZMEGM1h)

ऐसा लगता है कि "नीला" एक बिटमैप है। –

+0

यह विंडोज़ पर होने के बाद से थोड़ा अप्रासंगिक हो सकता है। लेकिन मैंने उबंटू लिनक्स, पायथन 2.6 पर यह कोशिश की, और यह बिना किसी प्रकार की त्रुटियों के काम करता है। शायद यह आपकी स्थापना/कॉन्फ़िगरेशन समस्या है? – avacariu

उत्तर

13

यदि आप टेक्स्ट विजेट का उपयोग नहीं करना चाहते हैं, तो आपको इसकी आवश्यकता नहीं है। एक विकल्प का उपयोग एक लेबल का उपयोग करना और माउस क्लिक को बाध्य करना है। भले ही यह एक लेबल है, फिर भी यह घटनाओं का जवाब देता है।

उदाहरण के लिए:

import tkinter as tk 

class App: 
    def __init__(self, root): 
     self.root = root 
     for text in ("link1", "link2", "link3"): 
      link = tk.Label(text=text, foreground="#0000ff") 
      link.bind("<1>", lambda event, text=text: self.click_link(event, text)) 
      link.pack() 

    def click_link(self, event, text): 
     print("You clicked '%s'" % text) 

root = tk.Tk() 
app = App(root) 
root.mainloop() 

आप चाहते हैं, तो आप कल्पना हो और <Enter> और <Leave> घटनाओं के लिए अतिरिक्त बाइंडिंग जोड़ें ताकि आप देखो बदल सकते हैं जब उपयोगकर्ता होवर कर सकते हैं। और, ज़ाहिर है, आप फ़ॉन्ट बदल सकते हैं ताकि पाठ को रेखांकित किया जा सके यदि आप चुनते हैं।

Tk एक अद्भुत टूलकिट है जो आपको जो भी चाहें उसके बारे में करने के लिए बिल्डिंग ब्लॉक देता है। आपको बस विगेट्स को पूर्व-निर्मित दीवारों और दरवाजे के सेट के रूप में नहीं देखना चाहिए, बल्कि कंबल, ईंटों और मोर्टार के ढेर की तरह।

1

"blue" वास्तव में स्वीकार्य होना चाहिए (चूंकि आप विंडोज़ पर हैं, तो टिंकर को अपने अंतर्निहित रंग नाम तालिका का उपयोग करना चाहिए - यह X11 पर सिस्टम गलत कॉन्फ़िगरेशन हो सकता है, लेकिन विंडोज़ पर नहीं); इसलिए, यह एक परेशानी की समस्या है (शायद एक Tkinter misconfig ...?)। यदि आप उदाहरण के लिए foreground="#00F" का उपयोग करते हैं तो क्या होगा? यह समस्या की व्याख्या नहीं करता है लेकिन कम से कम ...

+0

मैंने कोशिश की, और यह अभी भी एक ही त्रुटि प्रस्तुत किया। –

+0

@Zachary, आपका मतलब है कि आप '# 00F' दे रहे हैं और यह ** अभी भी **" नीली "के बारे में शिकायत कर रहा है जो अब और मौजूद नहीं है ??? या यह नहीं है कि "सटीक एक ही त्रुटि" से आपका क्या मतलब है? –

+0

संभवतः क्योंकि यह पहले रंग के रूप में एक 'बिटमैप "नीला" परिभाषित नहीं किया गया है, लेकिन एक रंग की तलाश नहीं कर रहा है। – msw

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