【发布时间】:2021-12-02 09:10:13
【问题描述】:
label = tk.Label(frame, text=app.split('/')[-1:][0] + "\n", bg="#1c1c1c",
padx=5, pady=5, font=("Helvetica 12 bold"), fg="white")
label.grid(row=0, column=0)
此代码应该生成标签(制作新标签是通过单独的函数完成的)并且标签应该从上到下,从窗口的左上角开始。我会使用label.pack() 但是label.pack() 只是让它从中间顶部到底部。这就是我使用label.grid(row=0, column=0) 的原因。但问题是新标签只是替换了先前存在的标签。有什么办法可以在仍然使用label.pack() 的同时修复移动标签?
完整的功能是 def addApps():
for widget in frame.winfo_children():
widget.destroy()
filename = filedialog.askopenfilename(initialdir="/", title="Select File",
filetypes= (("executables", "*.exe"), ("All files", "*.*")))
filename.split('/')[-1:][0]
apps.append(filename)
print("{filename}, {apps}")
for app in apps:
label = tk.Label(frame, text=app.split('/')[-1:][0] + "\n", bg="#1c1c1c",
padx=5, pady=5, font=("Helvetica 12 bold"), fg="white")
label.grid(row=0, column=0)
【问题讨论】:
-
请提供说明问题的minimal reproducible example。您显示的代码仅在窗口的一个位置创建一个标签。
-
但这就是我的问题所在。
-
我在您的代码中没有看到您正在移动小部件的任何地方。您只是将它们全部放在同一行和同一列中。
-
如果您想主动移动小部件(如动画),我强烈建议使用
tkinter.Canvas而不是调用.pack()或.grid()。当您在与前一个相同的位置(在本例中为row=0, column=0)网格化一个小部件时,它将替换它。grid()中相同“正方形”中的小部件不会相互移开。