Я пытался найти решение этой проблемы на многих форумах и во многих постах этого же форума, но безрезультатно. Я строю программу, которая делает SELECT в моей базе данных на моем локальном компьютере. В этой программе у меня есть меню, и в нем я создал функцию SELECT. Однако, когда я снова выбираю эту опцию, она создает новую метку чуть ниже нее, и я просто хочу обновить метку. Ниже приведены скриншоты программы и исходный код. Мне было интересно, если кто-нибудь может помочь мне решить эту проблему. Спасибо!
from tkinter import *
import psycopg2 # LIBRARY FOR CONNECT TO THE POSGRESQL DB
root = Tk()
root.geometry('1000x500')
menubar = Menu(root)
con = psycopg2.connect( # LOCAL POSTGRESQL DB CONNECTION
host="localhost",
database="escola",
user="postgres",
password=248657
)
def select():
v = StringVar()
cur = con.cursor() # CREATING A CURSOR
cur.execute("SELECT id, nome, dt_nasc, nome_mae, nome_pai FROM alunos") # QUERY
rows = cur.fetchall()
separator = '+----+-----------------------------+--------------------+-----------------------------+-----------------------------+'
prep_string = ''''''
prep_string = '''{}{}\n'''.format(prep_string, separator)
prep_string = '''{}{}\n'''.format(prep_string, '|ID'.ljust(5) + '| Nome'.ljust(30) + '| Data de Nascimento |'.ljust(
21) + ' Nome da Mãe'.ljust(29) + '| Nome do Pai'.ljust(30) + '|')
prep_string = '''{}{}\n'''.format(prep_string, separator)
for r in rows:
prep_string = '''{}{}\n'''.format(prep_string,
f'|{r[0]}'.ljust(5) + f'| {r[1]}'.ljust(30) + f'| {r[2]}'.ljust(
21) + f'| {r[3]}'.ljust(30) + f'| {r[4]}'.ljust(30) + '|')
prep_string = '''{}{}\n'''.format(prep_string, separator)
v.set(prep_string)
cur.close()
box = Label(root, textvariable=v, font='TkFixedFont').pack() # THE LABEL
# THE MENU
file = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Principal", menu=file)
file.add_command(label="SELECT", command=select)
file.add_command(label="Exit", command=root.quit)
root.config(menu=menubar) root.mainloop()