У меня есть пример программы Python, которая устанавливает текст метки Tkinter, а использование Mabel.config (text = string) протекает память. Другие методы для настройки текста нет. Здесь что -то не так? Я не эксперт по Python, но есть пример кода для этого на очень полезном веб-сайте Geeksforgeeks по адресу https://www.geeksforgeeks.org/how-to-ch ... label-text Я предполагаю, что этот код должен быть достаточно нормальным, но он, кажется, демонстрирует утечку. Покажите утечку. Если вы запустите это, как показано ниже, каждый раз, когда вы нажимаете на кнопку, она сбрасывает текст метки (после первого нажатия, просто продолжает настройку на одно и то же сообщение, но здесь это не имеет значения). Я добавил код, чтобы распечатать использование памяти, и он просто поднимается и поднимается каждый раз, когда вы нажимаете, и он выполняет строку: < /p>
my_label.config(text = my_text)
Теперь, если вы прокомментируете эту строку и используете
my_label["text"] = my_text
он больше не утечет память. Использование текстовой переменной тоже работает. < /P>
Очевидно, здесь есть потенциальные решения, но я хотел бы понять, почему это происходит. Я запускаю это на OS X, но мне сказали, что одно и то же работает на Windows, и на Raspberry Pi, используемом для оригинальной программы, где память находится в большей степени премиум.if (tracemalloc.get_traced_memory()[0] > 2000) : gc.collect()
Тогда утечка памяти заполняется на этом значении 2000 года. Оба вызова устанавливают текст метки как предполагалось, но одна утечка, а другой - нет. Здесь что -то не так? < /P>
# importing everything from tkinter
from tkinter import *
import tracemalloc
# creating the tkinter window
Main_window = Tk()
# variable
my_text = "GeeksforGeeks updated !!!"
# function define for
# updating the my_label
# widget content
def counter():
# use global variable
global my_text
# configure - one of these leaks, the other doesn't...
my_label.config(text = my_text)
#my_label["text"] = my_text
print (tracemalloc.get_traced_memory()[0])
# create a button widget and attached
# with counter function
my_button = Button(Main_window,
text = "Please update",
command = counter)
# create a Label widget
my_label = Label(Main_window,
text = "geeksforgeeks")
# place the widgets
# in the gui window
my_label.pack()
my_button.pack()
tracemalloc.start()
# Start the GUI
Main_window.mainloop()
Подробнее здесь: https://stackoverflow.com/questions/796 ... ing-doesnt
Python label.config (text = string) утечка памяти, но метка ["text"] = String нет. Что здесь происходит? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение