2010-03-26 15 views
8

Ben de, bir Tkinter giriş widget'la bir değişken ilişkilendirmek çalışıyorum bir yol olduğunu:Bir değişken girme widget'ına nasıl bağlanır?

Ben esas içine bir şey yazarak değerini girdisinin ("içerik"), her değiştirdiğinizde
  1. , Değişken otomatik olarak yazdığım şeyin değerini atar. Bensiz, "Güncelleştirme değeri" veya ilk olarak böyle bir düğmeye basmak zorunda kalmadan.

  2. Değişken ne zaman değiştirilirse (programın başka bir kısmı tarafından), giriş değerinin otomatik olarak ayarlanmasını istiyorum. Bunun textvariable ile çalışabileceğine inanıyorum.

Ben http://effbot.org/tkinterbook/entry.htm örneğe okumak, ama tam olarak aklımda ne var beni yardım etmiyor. Girişin "geçerliliğini" kullanarak ilk koşulu sağlamanın bir yolu olduğunu hissediyorum. Herhangi bir fikir?

+2

Belki bir alternatif önerebilirsiniz? :) –

+4

Nezaketle ilgili sorun nedir? Python ana sayfasına göre, "... Python'un standart dışı GUI paketi." Ve "en yaygın kullanılanı." – Sano98

+0

Kontrol değişkenleri: http://infohost.nmt.edu/tcc/help/pubs/tkinter/control-variables.html –

cevap

12

Sanırım böyle bir şey istiyorsun. Aşağıdaki örnekte, myvar değişkenini oluşturdum ve Label ve ve Entry parçacıklarının her biri için textvariable olarak atadım. Bu şekilde her ikisi de bağlanır ve Giriş widget'ındaki değişiklikler otomatik olarak Label'da yansıyacaktır.

Ayrıca, set trace değişkenlerini de ör. stdout'a yazmak.

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

Teşekkürler, bu doğru yönde gidiyor, ancak değişkenlerle çalışmak için onları normal python değişkenlerine dönüştürmem gerekiyor. Örneğiniz, widget'lar aynı textvariable'ı paylaştığından çalışır. Ancak, örneğin, girişinizin içeriğini standart bir çıktıya yazdırmak istediğinizde ne yaparsınız? – Sano98

+1

Bunu yaparsınız: 'text_entry.bind ('', işleyici)' 'handler', python değişkeninizi atayan bir işlevdir. Cevabımı gör. – Paul

+0

@ Sano98, ben/readed –

İlgili konular