簡體   English   中英

Python Tkinter 標簽移動不正常

[英]Python Tkinter label not moving properly

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)

正如布萊恩所說,你只是把標簽放在一起。 因為您不更改行或列坐標,所以標簽堆疊在彼此的頂部,最后放置的標簽是您將在頂部看到的標簽。 您需要更改grid()的行以堆疊它們。

下面的示例使用grid()pack()從上到下堆疊標簽,向左對齊

網格:

for label_row, app in enumerate(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=label_row, column=0, sticky = tk.NW)

盒:

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.pack(anchor = tk.NW)

我建議查看grid()pack()方法的工作原理以及兩者可用的選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM