2015-11-23 45 views
-1

我的代碼中存在StringVar問題。我的問題是變量是空的,它不包含條目的值。 我有兩種不同的方法,一種是有效的,另一種不是,但顯然是相同的。Tkinter:StringVar不工作,爲空

這項工作:

def ventanaPrincipal(): 
    top = Tkinter.Tk() 
    var = Tkinter.StringVar() 
    L1 = Tkinter.Label(top, text="Introduzca el nombre"+"\n"+ "completo del remitente:") 
    E1 = Tkinter.Entry(top,textvariable = var) 
    def buscar(): 
     buscarPorNombreYApellidos(var.get()) 

    B1 = Tkinter.Button(top, text ="Buscar", command = buscar) 
    L1.pack(side = Tkinter.LEFT) 
    B1.pack(side = Tkinter.RIGHT) 
    E1.pack(side = Tkinter.RIGHT) 
    top.mainloop() 

這不行:

def veentanaPrincipal(): 
    top = Tkinter.Tk() 
    var = Tkinter.StringVar() 
    def buscarPorNombre(): 
     pa = Tkinter.Tk() 
     L1 = Tkinter.Label(pa, text="Introduzca el nombre"+"\n"+ "completo del remitente:") 
     E1 = Tkinter.Entry(pa, textvariable = var) 
     def buscar(): 
      buscarPorNombreYApellidos(var.get()) 

     B1 = Tkinter.Button(pa, text ="Buscar", command = buscar) 
     L1.pack(side = Tkinter.LEFT) 
     B1.pack(side = Tkinter.RIGHT) 
     E1.pack(side = Tkinter.RIGHT) 

    B = Tkinter.Button(top, text ="Buscar por Nombre y Apellidos", command = buscarPorNombre)  
    B.pack()  
    top.mainloop() 

請幫助我。 謝謝

+1

我建議你看看關於如何正確地創建一個Tkinter的應用程序,否則你會最終不得不保留曲目一些教程很多這樣的示波器。 – TigerhawkT3

+0

您的縮進不正確。你的問題可能是由於你定義了'var'的地方,但是不可能知道,因爲你發佈的代碼有不正確的縮進。 –

+0

如果它不工作,您可能會收到一條錯誤消息,告訴您爲什麼。什麼是錯誤信息? –

回答

0

var是局部變量,所以你不能在另一個函數中訪問它。

可以使用global(或瞭解「對象編程」)

import Tkinter as tk 

def buscar(): 
    global var 

    print var.get() 

def buscarPorNombre(): 
    global var 

    var = tk.StringVar() 
    E1 = tk.Entry(top, textvariable=var) 
    E1.pack(side=tk.RIGHT) 

    B1 = tk.Button(top, text="OK", command=buscar) 
    B1.pack(side=tk.RIGHT) 

top = tk.Tk() 
B = tk.Button(top, text="RUN", command=buscarPorNombre)  
B.pack()  
top.mainloop()