【发布时间】:2020-01-22 21:26:00
【问题描述】:
试图寻找其他类似的问题,但找不到。
我正在使用名为 tkinter 的 Python 上的 GUI 库构建桌面应用程序。以下是代码中的一个函数,它在按下按钮后加载一个完整的框架(有点像应用程序的页面)。它只需要一个名为 pom 的元组并(使用 for 循环)在框架上显示其中的信息,同时它允许用户通过输入条目编辑其上的一些值。
我想制作一个保存按钮,该按钮将调用一个外部函数,为其提供新的编辑元组,以便我可以继续执行,但由于某种原因,我无法在 for 循环工作后编写任何代码。
我想知道为什么。我已经有一个小时了,并且会继续尝试,直到找出这东西到底是怎么回事。提前谢谢你。
def edit_pom(pom):
#Edit frame set up.
editFrame.tkraise()
IdLabel = tk.Label(editFrame, text=str("Editing "+str(pom[-1])), bg=FRAME_BG_COLOR, font=(FONT, 28), fg="white")
IdLabel.place(relx=1/2, rely=1/45, relwidth=1, anchor="n")
dataFrame = tk.Frame(editFrame, bg=FRAME_BG_COLOR)
dataFrame.place(relx=1/2, rely=(1/20)+(1/6), width=WIDTH, relheight=1/2, anchor="n")
titles = ["dummy","Time","Date","Description","Code","Minutes"]
entries = []
index = 1
for i in pom:
label1 = tk.Label(dataFrame, text=titles[index]+":", bg=FRAME_BG_COLOR, font=(FONT, 18), fg="white")
label1.grid(row=index, column=0, sticky="W")
if titles[index] == "Code" or titles[index] == "Description":
Entry1 = tk.Entry(dataFrame)
Entry1.grid(row=index, column=1, sticky="E")
Entry1.insert(0, i)
entries.append(Entry1)
else:
label2 = tk.Label(dataFrame, text=i, bg=FRAME_BG_COLOR, font=(FONT, 18), fg="white")
label2.grid(row=index, column=1, sticky="E")
label1.grid_columnconfigure(0, weight=10)
label2.grid_columnconfigure(1, weight=10)
index += 1
print("This part is not being printed.")
【问题讨论】:
-
你的程序卡住了吗?我怀疑您的 for 循环中的某些内容没有返回或静默失败。一些更精细的打印语句怎么样?没有一段代码可以运行我只能推测
-
我也想过静默失败,但这没有意义,我在 for 循环的底部放置了一个 print 语句,它会执行它应该进行的所有迭代屏幕也显示了它所支持的一切。我还尝试在 for 循环中进行评论,并且下面的代码有效。这真的很令人困惑,就像我在 foo 循环下写的任何东西都不存在一样。
-
不是在 for 的底部,而是在 if 和 else 的底部内打印。另外,当您说 for 的 bottom 时,您是什么意思?里面还是外面?
-
我的意思是在for的底部。而且我还在 if 和 else 的底部做了两个,并且表现得像预期的那样。但我想我终于解决了。你注意到“索引”变量了吗?在 for 完成后,它应该是 5,所以我在里面添加了一个带有该条件的 if 和一个 break 语句,最后执行继续进行(函数底部和 for 外部的代码工作)。