tkinter 的 entry get 函数的一个实例不工作,而它周围的其他人工作

one instance of tkinter's entry get function isn't working while others around it work

在我的代码中,我有两个 .get 函数引用填充的 tkinter 单元格。据我所知,它们完全相同。但是,new_comp_name.get()new_comp_email.get() returns 为空值时完美运行。我放弃了几个小时,我想我可以在这里得到一些帮助。下面的代码被简化了,但是 运行 它,我仍然遇到同样的 bizzar 问题。我什至重新启动了我的电脑,但仍然没有运气。任何帮助将不胜感激。

def newc_popup():
    compviewFresh()
    newc_popup = Toplevel()
    newc_popup.title("New Company")
#-----------fetch options list from types DB
    connection = sqlite3.connect('companyDB99.db')
    ###### end of connection ####

    query="SELECT type_name as class FROM types"
    r_set=connection.execute(query);
    my_list = [r for r, in r_set] # create a  list 

    options = tk.StringVar(newc_popup)

    comptypeSELECT =tk.OptionMenu(newc_popup, options, *my_list)
    #om1.grid(row=2,column=5)

#-----------

    comp_name_label = Label(newc_popup, text="Company Name")
    comp_name_label.grid(row=1, column=0)

    new_comp_name = Entry(newc_popup, width=50)
    new_comp_name.grid(row=1, column=1)

    comp_email_label = Label(newc_popup, text="Email Address")
    comp_email_label.grid(row=2, column=0)

    new_comp_email = Entry(newc_popup, width=50)
    new_comp_email.grid(row=2, column=1)

    comptypeSELECT_lable = Entry(newc_popup, width=50)
    comptypeSELECT_lable.grid(row=2, column=1)

    comptypeSELECT.grid(row=3, column=1,)

    

    def addComp():
        compviewFresh()    
        connection = sqlite3.connect('companyDB99.db')
        cursor = connection.cursor()
        print(new_comp_name.get())
        print(new_comp_email.get())

    addComp_btn = Button(newc_popup, text="Add Company", command=addComp)
    addComp_btn.grid(row=4, column=0, columnspan=2)

您对 .get 的呼叫工作正常。问题是您在同一个地方有两个条目,所以您没有输入您认为正在输入的小部件。

这是问题所在:

new_comp_email.grid(row=2, column=1)
comptypeSELECT_lable.grid(row=2, column=1)

comptypeSELECT_label 是一个条目,所以当您认为您正在输入 new_comp_email 时,您实际上是在输入 comptypeSELECT_label,因为它是最后添加的,因此位于 new_comp_email。因此,new_comp_email 为空。