2010-03-26 10 views
8

मैं एक Tkinter प्रविष्टि विजेट के साथ एक चर संबद्ध करने के लिए कोशिश कर रहा हूँ में एक तरीका है कि:एक चर को एंट्री विजेट से कैसे कनेक्ट करें?

  1. जब भी मैं मुख्य रूप से इसे में कुछ लिखकर मूल्य प्रविष्टि के ("सामग्री"), बदलने के लिए, वेरिएबल स्वचालित रूप से जो मैंने टाइप किया है उसके मान को असाइन किया जाता है। मेरे बिना बटन "अपडेट वैल्यू" या पहले ऐसा कुछ दबाए बिना।

  2. जब भी चर बदल जाता है (प्रोग्राम के किसी अन्य भाग द्वारा), मैं चाहता हूं कि प्रविष्टि मान स्वचालित रूप से समायोजित किया जाए। मुझे विश्वास है कि यह textvariable के माध्यम से काम कर सकता है।

मैं http://effbot.org/tkinterbook/entry.htm पर उदाहरण पढ़ते हैं, लेकिन यह वास्तव में मैं क्या मन में है के लिए मेरी मदद नहीं कर रहा है। मुझे एहसास है कि प्रवेश की "वैध" का उपयोग करने के साथ पहली शर्त सुनिश्चित करने का एक तरीका है। कोई विचार?

+2

शायद आप एक विकल्प सुझा सकते हैं? :) –

+4

tkinter के साथ क्या गलत है? पायथन होमपेज के अनुसार, यह "... पायथन का डी-फैक्टो मानक जीयूआई पैकेज है।" और "सबसे अधिक इस्तेमाल किया जाने वाला एक।" – Sano98

+0

नियंत्रण चर: http://infohost.nmt.edu/tcc/help/pubs/tkinter/control-variables.html –

उत्तर

12

मुझे लगता है कि आपको ऐसा कुछ चाहिए। नीचे दिए गए उदाहरण में, मैंने एक चर myvar बनाया है और इसे Label और Entry विजेट दोनों के textvariable के रूप में असाइन किया है। इस तरह दोनों जोड़े गए हैं और प्रविष्टि विजेट में परिवर्तन लेबल में स्वचालित रूप से प्रतिबिंबित होंगे।

आप चर पर set trace भी कर सकते हैं, उदा। stdout को लिखने के लिए।

from tkinter import * 


root = Tk() 
root.title("MyApp") 

myvar = StringVar() 

def mywarWritten(*args): 
    print "mywarWritten",myvar.get() 

myvar.trace("w", mywarWritten) 

label = Label(root, textvariable=myvar) 
label.pack() 

text_entry = Entry(root, textvariable=myvar) 
text_entry.pack() 

root.mainloop() 
+0

धन्यवाद, यह सही दिशा में जाता है, लेकिन चर के साथ काम करने के लिए, मुझे उन्हें सामान्य पायथन चर में बदलने की आवश्यकता है। आपका उदाहरण काम करता है क्योंकि विजेट समान टेक्स्ट साझा करने योग्य होते हैं। लेकिन आप क्या करेंगे, उदाहरण के लिए, यदि आप मानक प्रविष्टि में अपनी प्रविष्टि की सामग्री को मुद्रित करना चाहते हैं, तो जब भी इसे टिंकर लेबल में लिखने के बजाय बदल दिया जाए? – Sano98

+1

आप यह करते हैं: 'text_entry.bind ('', हैंडलर) 'जहां' हैंडलर 'एक ऐसा फ़ंक्शन है जो आपके पायथन चर निर्दिष्ट करता है। मेरा जवाब देखें – Paul

+0

@ Sano98, मैंने जवाब संपादित किया है, आप आसानी से पढ़ने/लिखने के लिए चर का पता लगा सकते हैं –

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