2012-05-30 8 views
7

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

उत्तर

9

क्या आपने टेक्स्ट विजेट को अक्षम करने का प्रयास किया है?

text_widget.bind("<1>", lambda event: text_widget.focus_set()) 

आप विजेट अक्षम करते हैं:

text_widget.configure(state="disabled") 

कुछ प्लेटफार्मों पर, आप भी <1> पर एक बाध्यकारी जोड़ने के लिए विजेट पर ध्यान देने के लिए, नहीं तो प्रति के लिए हाइलाइटिंग प्रकट नहीं होता है की जरूरत है , प्रोग्राम के सम्मिलित करने के लिए आप बस करने के लिए

  1. बदलें करने के लिए NORMAL
  2. मैं विजेट के राज्य की जरूरत है पाठ, और फिर
  3. बदलें राज्य वापस DISABLED

को nsert जब तक आप उस के बीच में update कॉल नहीं करते फिर वहाँ के लिए उपयोगकर्ता सहभागी कुछ भी दर्ज करने के लिए सक्षम होने के लिए कोई रास्ता नहीं है।

+0

हाँ मेरे पास है, लेकिन दस्तावेज़ों के मुताबिक, यह किसी भी तरह से काम करने की इजाजत देता है, यहां तक ​​कि कार्यों और ऐसे कार्यों से भी। –

+0

@PsychicOak: ज़ाहिर है। लेकिन प्रोग्रामिक रूप से सम्मिलित करने के लिए आपको बस इतना करना है कि राज्य को "सामान्य" पर सेट करें, टेक्स्ट डालें, फिर राज्य को "अक्षम" पर रीसेट करें। मैंने उस जानकारी को शामिल करने के लिए अपना जवाब अपडेट कर लिया है। –

+0

* श्वास * मुझे अब बेवकूफ लगता है>।> हाहा धन्यवाद! जब मैं xD स्वीकार करने की अनुमति देता हूं तो आपको अपने अंक मिलेंगे –

1

क्षमा करें मुझे पार्टी के लिए देर हो चुकी है लेकिन मुझे यह पृष्ठ आपके जैसा ही समाधान ढूंढ रहा है।

मुझे पता चला कि यदि आप डिफ़ॉल्ट रूप से टेक्स्ट विजेट को "अक्षम" करते हैं और फिर फ़ंक्शन की शुरुआत में "सामान्य" होता है जो इसे इनपुट देता है और फ़ंक्शन के अंत में इसे फिर से "अक्षम" करता है।

def __init__(): 
    self.output_box = Text(fourth_frame, width=160, height=25, background="black", foreground="white") 
    self.output_box.configure(state="disabled") 

def somefunction(): 
    self.output_box.configure(state="normal") 
    (some function goes here) 
    self.output_box.configure(state="disable") 
0

मैं भी राज्य = "सामान्य"/राज्य = "अक्षम" समाधान पर ठोकर खाई है, तथापि तो आप चयन नहीं कर पायेंगे और इससे बाहर पाठ की प्रतिलिपि। अंततः मुझे नीचे दिए गए समाधान को मिला: Is there a way to make the Tkinter text widget read only?, और यह समाधान आपको पाठ का चयन और प्रतिलिपि बनाने के साथ-साथ हाइपरलिंक्स का पालन करने की अनुमति देता है।

import Tkinter 

root = Tkinter.Tk() 
readonly = Tkinter.Text(root) 
readonly.bind("<Key>", lambda e: "break") 
संबंधित मुद्दे