如何打破 tkinter 中的循环?

how to break looping in tkinter?

这是我的代码。

from PyPDF2 import PdfFileReader
import tkinter as tk
from tkinter import ttk
from tkinter import filedialog


root = tk.Tk()

label_list = []

def get_info(path):
    with open(path, 'rb') as f:
        pdf = PdfFileReader(f)
        info = pdf.getDocumentInfo()
        page = pdf.getPage(4)


        label_list[0].config(text = "Title")
        label_list[1].config(text = info.title)
        label_list[2].config(text = "Author")
        label_list[3].config(text = info.author)
        label_list[4].config(text = "Subject")
        label_list[5].config(text = info.subject)
        label_list[6].config(text = "Abstract")
        label_list[7].config(text = page.extractText())

        save = tk.Button(root, text="Save")
        save.pack()



def browsefunc():
    filename = filedialog.askopenfilename()
    pathlabel.config(text=filename)
    get_info(filename)

browsebutton = tk.Button(root, text="Choose a File", command=browsefunc)
browsebutton.pack()

pathlabel = tk.Label(root)
pathlabel.pack()

for i in range(8):
    label_list.append(tk.Label(root, text=""))
    label_list[i].pack()

root.mainloop()

我添加了保存按钮,当我选择文件时该按钮会显示,当我选择一个新文件时,我有 2 个保存按钮等等。

如何破解数据,选择新文件时只有1个按钮?

这里有一种方法可以让按钮在需要时显示,然后在不需要时将其删除。

我们可以有一个跟踪变量来查看我们当前是否打开了一个按钮,当我们使用该按钮时,我们可以将按钮作为函数的一部分删除。所以当我们需要它时创建它并在它完成时销毁。

from PyPDF2 import PdfFileReader
import tkinter as tk
from tkinter import ttk
from tkinter import filedialog


root = tk.Tk()

label_list = []
track_save_button = False

def save_func():
    global track_save_button, save
    # your code for saving data here
    save.destroy()
    track_save_button = False

def get_info(path):
    global track_save_button, save
    if track_save_button == False:
        save = tk.Button(root, text="Save", command=save_func)
        save.pack()
        track_save_button = True

        with open(path, 'rb') as f:
            pdf = PdfFileReader(f)
            info = pdf.getDocumentInfo()
            page = pdf.getPage(4)   
            label_list[0].config(text = "Title")
            label_list[1].config(text = info.title)
            label_list[2].config(text = "Author")
            label_list[3].config(text = info.author)
            label_list[4].config(text = "Subject")
            label_list[5].config(text = info.subject)
            label_list[6].config(text = "Abstract")
            label_list[7].config(text = page.extractText())
    else:
        print("Save Button is already active!")

def browsefunc():
    filename = filedialog.askopenfilename()
    pathlabel.config(text=filename)
    get_info(filename)

browsebutton = tk.Button(root, text="Choose a File", command=browsefunc)
browsebutton.pack()

pathlabel = tk.Label(root)
pathlabel.pack()

for i in range(8):
    label_list.append(tk.Label(root, text=""))
    label_list[i].pack()

root.mainloop()