【发布时间】:2015-03-11 19:14:49
【问题描述】:
有一个清单:
liste_physical_activity.insert(1, pa1)
liste_physical_activity.insert(2, pa2)
liste_physical_activity.bind('<<ListboxSelect>>', CurSelet_physical_activity)
liste_physical_activity.pack()
链接到以下函数:
def CurSelet_physical_activity(event, window_mother):
# stuff
即使使用 lambda 也不起作用:
<<ListboxSelect>>', lambda event,
window_mother=main_window CurSelet_physical_activity (event, window_mother))
问题是main_window已经在另一个file.py中创建了,所以他不知道。
我该如何解决这个问题?
编辑参考问题:
main.py
from Energy_Requirement import*
main_window =Tk()
bouton_energy_requirement= Button(main_window, text="Estimation of energy requirement", command=lambda:energy_requirement(main_window))
bouton_energy_requirement.pack()
file1.py
def energy_requirement(window_mother):
pa1="NRC"
pa2="Kornfeld"
window5=Toplevel(window_mother)
liste_physical_activity = Listbox(window5,width=80, height=5)
liste_physical_activity.insert(1, pa1)
liste_physical_activity.insert(2, pa2)
liste_physical_activity.bind('<<ListboxSelect>>', CurSelet_physical_activity)
liste_physical_activity.pack()
def CurSelet_physical_activity(event):
global liste_physical_activity
value=str(liste_physical_activity.get(liste_physical_activity.curselection()))
if value==pa1:
ER=1
label = Label(main_window, text="Energy Requirement (kcal ME/day)")
label.pack()
show_ER=StringVar()
show_ER.set(ER)
entree_ER = Entry(main_window,textvariable=show_ER,width=30)
entree_ER.pack()
if value==pa2:
ER=2
label = Label(main_window, text=" Energy Requirement (kcal ME/day)")
label.pack()
show_ER=StringVar()
show_ER.set(ER)
entree_ER = Entry(main_window,textvariable=show_ER,width=30)
entree_ER.pack()
【问题讨论】:
-
对 lambda 的使用看起来不像是有效的 python。那是你的实际代码吗?
-
我不使用它,因为它不起作用并返回“未定义主窗口”,但我试图从中适应:stackoverflow.com/questions/7299955/…
-
在没有看到实际代码的情况下,无法猜测如何修复它。请提供一个完整的、最小的示例来说明问题。不要包含所有代码,创建最小的工作程序可能会产生相同的错误。
-
再次编辑。希望这会有所帮助。非常感谢。