Я пытаюсь сделать свой пользовательский интерфейс (который обычно выполняет другие действия, это версия barebones), обновляет метку изображения с веб-ресурса. Когда вы нажимаете кнопку, все окно увеличивается вместо заменяемого изображения. Я думал, что мой призыв к пакету позаботится об этом, но, видимо, нет.Изменение ярлыка изображения динамически приводит к увеличению всего окна.
Спасибо за ввод!
from Tkinter import *
import base64
import urllib2
BTNTEXT_NEW_COMIC = "New Comic"
def get_random_xkcd():
COMIC_PREFIX = 'http://imgs.xkcd.com/comics/'
response = urllib2.urlopen('http://c.xkcd.com/random/comic/')
html = response.read()
if COMIC_PREFIX in html:
index = html.find(COMIC_PREFIX)
substring = html[index:]
endquote = substring.find("\"")
url = substring[:endquote]
return url
else:
return
class LoggerWindow:
def __init__(self, master):
global frame
frame = Frame(master)
frame.pack()
self.newcomic_button = Button(frame, text=BTNTEXT_NEW_COMIC, command=self.new_xkcd)
self.newcomic_button.pack(side=LEFT)
self.new_xkcd()
def new_xkcd(self):
global frame
url = get_random_xkcd()
print url
u = urllib2.urlopen(url)
raw_data = u.read()
u.close()
b64_data = base64.encodestring(raw_data)
self.xkcd_image = PhotoImage(data=b64_data)
self.xkcd_label = Label(image=self.xkcd_image)
self.xkcd_label.pack()
root = Tk()
app = LoggerWindow(root)
root.mainloop()
Bingo! Настроить был маршрут, я даже не пытался pack_forget. –
Вызов 'pack_forget' только удаляет его из представления. Он все еще занимает память. –
Хорошая точка. Я предложил 'pack_forget' удалить его из окна, которое решило бы описанную проблему. Я полагаю, что 'destroy()' будет лучшим способом удалить его из памяти. – Keith