Python 动态更改图像标签会导致整个窗口增长
我试图让我的UI(通常做其他事情,这是基本版本)从web资源更新图像标签。按下按钮时,整个窗口将增长,而不是替换图像。我以为我的打包电话会解决这个问题,但显然不是 谢谢你的意见Python 动态更改图像标签会导致整个窗口增长,python,tkinter,Python,Tkinter,我试图让我的UI(通常做其他事情,这是基本版本)从web资源更新图像标签。按下按钮时,整个窗口将增长,而不是替换图像。我以为我的打包电话会解决这个问题,但显然不是 谢谢你的意见 from Tkinter import * import base64 import urllib2 BTNTEXT_NEW_COMIC = "New Comic" def get_random_xkcd(): COMIC_PREFIX = 'http://imgs.xkcd.com/comi
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()
您应该能够调用
self.xkcd\u label.configure(image=self.xkcd\u image)
,而不是像您那样创建新映像。如果不起作用,请尝试调用self.xkcd_label.pack_forget()
在重新打包之前删除标签。您应该能够调用self.xkcd_label.configure(image=self.xkcd_image)
,而不是像您那样创建新映像。如果不起作用,请尝试调用self.xkcd_label.pack_forget()
在重新打包之前删除标签。您应该能够调用self.xkcd_label.configure(image=self.xkcd_image)
,而不是像您那样创建新映像。如果不起作用,请尝试调用self.xkcd_label.pack_forget()
在重新打包之前删除标签。您应该能够调用self.xkcd_label.configure(image=self.xkcd_image)
,而不是像您那样创建新映像。如果这不起作用,请尝试调用self.xkcd\u label.pack\u forget()
在重新打包之前移除标签。答对了!配置是路由,我甚至没有尝试使用pack\u-forget。调用pack\u-forget
只会将其从视图中删除。它仍在占用内存。说得好。我建议pack\u forget
将其从窗口中删除,这将解决所描述的问题。我想destroy()!配置是路由,我甚至没有尝试使用pack\u-forget。调用pack\u-forget
只会将其从视图中删除。它仍在占用内存。说得好。我建议pack\u forget
将其从窗口中删除,这将解决所描述的问题。我想destroy()!配置是路由,我甚至没有尝试使用pack\u-forget。调用pack\u-forget
只会将其从视图中删除。它仍在占用内存。说得好。我建议pack\u forget
将其从窗口中删除,这将解决所描述的问题。我想destroy()!配置是路由,我甚至没有尝试使用pack\u-forget。调用pack\u-forget
只会将其从视图中删除。它仍在占用内存。说得好。我建议pack\u forget
将其从窗口中删除,这将解决所描述的问题。我想destroy()
将是从内存中删除它的最佳方法。