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
为空。
在我的代码中,我有两个 .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
为空。