2014-10-22 114 views
0

Python noob here。我创建了一个6帧的简单tkinter应用程序。使用多个框架是我可以找到所有小部件排列起来的最简单的方法。python tkinter和stringvar()的范围

我想在其中一个框架中的文本输入字段可以通过代码中的其他功能进行更新。但是,无论我尝试什么,我都无法使用blah.set(“blah”)来工作。

我没有使用自己/父母的东西,因为我还没有弄清楚。这是我得到的:

def Next() : 

    glob_current_company_display.set("test") 


def makeWindow() : 

    win = Tk() 
    win.title('Finder') 
    win.geometry('+842+721') 

    # ************************************************************************ 
    # Frame 2 
    frame2 = Frame(win) 
    button_03 = Button(frame2, text="Next", width=10, command=Next) 
    button_03.pack(side=LEFT) 

    # ************************************************************************ 
    # Frame 5 
    frame5 = Frame(win) 
    co_name_label = Label(frame5, text="Company Name: ", justify=LEFT) 
    co_name_label.pack(side=LEFT) 

    global glob_current_company_display 
    glob_current_company_display = StringVar() 
    co_name_entry = Entry(frame5, width=50, textvariable=glob_current_company_display) 

    co_name_entry.pack(side=LEFT) 

    # ************************************************************************ 
    # Pack the frames 

    frame5.pack(side=TOP, pady=5, padx=5) 
    frame2.pack(side=TOP, pady=5, padx=5) 

    return win 


win = makeWindow() 

win.mainloop() 

回答

0

你可能应该调查“自己/父母的东西”。这种东西非常方便。现在:您可以在具有Next()作为命令的button_03之前创建全局变量(其中引用了te全局)。

from Tkinter import * 

def Next() : 
    glob_current_company_display.set("test") 

def makeWindow() : 



    win = Tk() 
    win.title('Finder') 
    win.geometry('+842+721') 

    global glob_current_company_display 
    glob_current_company_display = StringVar() 

    # ************************************************************************ 
    # Frame 2 
    frame2 = Frame(win) 
    button_03 = Button(frame2, text="Next", width=10, command=Next) 
    button_03.pack(side=LEFT) 

    # ************************************************************************ 
    # Frame 5 
    frame5 = Frame(win) 
    co_name_label = Label(frame5, text="Company Name: ", justify=LEFT) 
    co_name_label.pack(side=LEFT) 


    co_name_entry = Entry(frame5, width=50, textvariable=glob_current_company_display) 

    co_name_entry.pack(side=LEFT) 

    # ************************************************************************ 
    # Pack the frames 

    frame5.pack(side=TOP, pady=5, padx=5) 
    frame2.pack(side=TOP, pady=5, padx=5) 

    return win 

win = makeWindow() 

win.mainloop()